Merge: new `with` statement
[nit.git] / src / parser / parser.nit
index 3a6986f..4d5fbc9 100644 (file)
 # Parser.
 # This file was generated by SableCC (http://www.sablecc.org/).
-package parser
+module parser is no_warning("missing-doc", "unread-variable")
 
 intrude import parser_prod
+intrude import parser_work
+private import tables
 
-# State of the parser automata as stored in the parser stack.
-private class State
-       # The internal state number
-       readable writable var _state: Int
-
-       # The node stored with the state in the stack
-       readable writable var _nodes: nullable Object
-
-       init(state: Int, nodes: nullable Object)
-       do
-               _state = state
-               _nodes = nodes
-       end
-end
-
-class Parser
-       super TablesCapable
-       # Associated lexer
-       var _lexer: Lexer
-
-       # Stack of pushed states and productions
-       var _stack: Array[State]
-
-       # Position in the stack
-       var _stack_pos: Int
-
-       # Create a new parser based on a given lexer
-       init(lexer: Lexer)
-       do
-               _lexer = lexer
-               _stack = new Array[State]
-               _stack_pos = -1
-               build_reduce_table
-       end
-
-       # Do a transition in the automata
-       private fun go_to(index: Int): Int
-       do
-               var state = state
-               var low = 1
-               var high = parser_goto(index, 0) - 1
-
-               while low <= high do
-                       var middle = (low + high) / 2
-                       var subindex = middle * 2 + 1 # +1 because parser_goto(index, 0) is the length
-
-                       var goal = parser_goto(index, subindex)
-                       if state < goal then
-                               high = middle - 1
-                       else if state > goal then
-                               low = middle + 1
-                       else
-                               return parser_goto(index, subindex+1)
-                       end
-               end
-
-               return parser_goto(index, 2) # Default value
-       end
-
-       # Push someting in the state stack
-       private fun push(numstate: Int, list_node: nullable Object)
-       do
-               var pos = _stack_pos + 1
-               _stack_pos = pos
-               if pos < _stack.length then
-                       var state = _stack[pos]
-                       state.state = numstate
-                       state.nodes = list_node
-               else
-                       _stack.push(new State(numstate, list_node))
-               end
-       end
-
-       # The current state
-       private fun state: Int
-       do
-               return _stack[_stack_pos].state
-       end
-
-       # Pop something from the stack state
-       private fun pop: nullable Object
-       do
-               var res = _stack[_stack_pos].nodes
-               _stack_pos = _stack_pos -1
-               return res
-       end
-
-       # Build and return a full AST.
-       fun parse: Start
-       do
-               push(0, null)
-
-               var lexer = _lexer
-               loop
-                       var token = lexer.peek
-                       if token isa AError then
-                               return new Start(null, token)
-                       end
-
-                       var index = token.parser_index
-                       var action_type = parser_action(state, 2)
-                       var action_value = parser_action(state, 3)
-
-                       var low = 1
-                       var high = parser_action(state, 0) - 1
-
-                       while low <= high do
-                               var middle = (low + high) / 2
-                               var subindex = middle * 3 + 1 # +1 because parser_action(state, 0) is the length
-
-                               var goal = parser_action(state, subindex)
-                               if index < goal then
-                                       high = middle - 1
-                               else if index > goal then
-                                       low = middle + 1
-                               else
-                                       action_type = parser_action(state, subindex+1)
-                                       action_value = parser_action(state, subindex+2)
-                                       high = low -1 # break
-                               end
-                       end
-
-                       if action_type == 0 then # SHIFT
-                               push(action_value, lexer.next)
-                       else if action_type == 1 then # REDUCE
-                               _reduce_table[action_value].action(self)
-                       else if action_type == 2 then # ACCEPT
-                               var node2 = lexer.next
-                               assert node2 isa EOF
-                               var node1 = pop
-                               assert node1 isa AModule
-                               var node = new Start(node1, node2)
-                               (new ComputeProdLocationVisitor).enter_visit(node)
-                               return node
-                       else if action_type == 3 then # ERROR
-                               var node2 = new AError.init_error("Syntax error: unexpected token.", token.location)
-                               var node = new Start(null, node2)
-                               return node
-                       end
-                       if false then break # FIXME remove once unreach loop exits are in c_src
-               end
-               abort # FIXME remove once unreach loop exits are in c_src
-       end
-
-       var _reduce_table: Array[ReduceAction]
-       private fun build_reduce_table
+redef class Parser
+       redef fun build_reduce_table
        do
                _reduce_table = new Array[ReduceAction].with_items(
                        new ReduceAction0(0),
@@ -168,634 +26,551 @@ class Parser
                        new ReduceAction13(0),
                        new ReduceAction14(0),
                        new ReduceAction15(0),
-                       new ReduceAction16(0),
-                       new ReduceAction17(0),
-                       new ReduceAction18(0),
-                       new ReduceAction19(0),
-                       new ReduceAction20(0),
-                       new ReduceAction21(0),
-                       new ReduceAction22(0),
-                       new ReduceAction23(0),
-                       new ReduceAction24(0),
-                       new ReduceAction25(0),
-                       new ReduceAction26(0),
-                       new ReduceAction27(0),
-                       new ReduceAction28(0),
-                       new ReduceAction29(0),
-                       new ReduceAction30(0),
-                       new ReduceAction31(0),
-                       new ReduceAction32(1),
-                       new ReduceAction33(2),
-                       new ReduceAction34(2),
-                       new ReduceAction35(3),
-                       new ReduceAction36(3),
-                       new ReduceAction37(4),
-                       new ReduceAction37(4),
-                       new ReduceAction39(5),
-                       new ReduceAction40(5),
-                       new ReduceAction41(5),
-                       new ReduceAction42(5),
-                       new ReduceAction43(5),
-                       new ReduceAction44(5),
-                       new ReduceAction45(5),
-                       new ReduceAction46(5),
-                       new ReduceAction47(5),
-                       new ReduceAction48(5),
-                       new ReduceAction49(5),
-                       new ReduceAction50(5),
-                       new ReduceAction51(5),
-                       new ReduceAction52(5),
-                       new ReduceAction53(5),
-                       new ReduceAction54(5),
-                       new ReduceAction55(6),
-                       new ReduceAction56(6),
-                       new ReduceAction57(6),
-                       new ReduceAction58(6),
-                       new ReduceAction59(7),
-                       new ReduceAction60(7),
-                       new ReduceAction61(8),
-                       new ReduceAction62(9),
-                       new ReduceAction63(9),
-                       new ReduceAction64(10),
-                       new ReduceAction65(10),
-                       new ReduceAction66(11),
-                       new ReduceAction67(12),
-                       new ReduceAction68(12),
-                       new ReduceAction69(12),
-                       new ReduceAction70(12),
-                       new ReduceAction71(12),
-                       new ReduceAction72(12),
-                       new ReduceAction73(12),
-                       new ReduceAction74(12),
-                       new ReduceAction75(12),
-                       new ReduceAction76(12),
-                       new ReduceAction77(12),
-                       new ReduceAction78(12),
-                       new ReduceAction79(12),
-                       new ReduceAction80(12),
-                       new ReduceAction81(12),
-                       new ReduceAction82(12),
-                       new ReduceAction83(12),
-                       new ReduceAction84(12),
-                       new ReduceAction85(12),
-                       new ReduceAction86(12),
-                       new ReduceAction87(12),
-                       new ReduceAction88(12),
-                       new ReduceAction89(12),
-                       new ReduceAction90(12),
-                       new ReduceAction91(12),
-                       new ReduceAction92(12),
-                       new ReduceAction93(12),
-                       new ReduceAction94(12),
-                       new ReduceAction95(12),
-                       new ReduceAction96(12),
-                       new ReduceAction97(12),
-                       new ReduceAction98(12),
-                       new ReduceAction99(12),
-                       new ReduceAction100(12),
-                       new ReduceAction101(12),
-                       new ReduceAction102(12),
-                       new ReduceAction103(12),
-                       new ReduceAction104(12),
-                       new ReduceAction105(12),
-                       new ReduceAction106(12),
-                       new ReduceAction107(12),
-                       new ReduceAction108(12),
-                       new ReduceAction109(12),
-                       new ReduceAction110(12),
-                       new ReduceAction111(12),
-                       new ReduceAction112(12),
-                       new ReduceAction113(12),
-                       new ReduceAction114(12),
-                       new ReduceAction115(12),
-                       new ReduceAction116(12),
-                       new ReduceAction117(12),
-                       new ReduceAction118(12),
-                       new ReduceAction119(12),
-                       new ReduceAction120(12),
-                       new ReduceAction121(12),
-                       new ReduceAction122(12),
-                       new ReduceAction123(12),
-                       new ReduceAction124(12),
-                       new ReduceAction125(12),
-                       new ReduceAction126(12),
-                       new ReduceAction127(12),
-                       new ReduceAction128(12),
-                       new ReduceAction129(12),
-                       new ReduceAction130(12),
-                       new ReduceAction131(12),
-                       new ReduceAction132(12),
-                       new ReduceAction133(12),
-                       new ReduceAction134(12),
-                       new ReduceAction135(12),
-                       new ReduceAction136(12),
-                       new ReduceAction137(12),
-                       new ReduceAction138(12),
-                       new ReduceAction139(13),
-                       new ReduceAction140(13),
-                       new ReduceAction141(14),
-                       new ReduceAction142(14),
-                       new ReduceAction143(15),
-                       new ReduceAction144(15),
-                       new ReduceAction145(16),
-                       new ReduceAction146(16),
-                       new ReduceAction147(16),
-                       new ReduceAction148(16),
-                       new ReduceAction149(17),
-                       new ReduceAction150(17),
-                       new ReduceAction151(17),
-                       new ReduceAction152(17),
-                       new ReduceAction153(17),
-                       new ReduceAction154(17),
-                       new ReduceAction155(17),
-                       new ReduceAction156(17),
-                       new ReduceAction157(17),
-                       new ReduceAction158(17),
-                       new ReduceAction159(17),
-                       new ReduceAction160(17),
-                       new ReduceAction161(17),
-                       new ReduceAction162(17),
-                       new ReduceAction163(17),
-                       new ReduceAction164(17),
-                       new ReduceAction165(17),
-                       new ReduceAction166(17),
-                       new ReduceAction167(18),
-                       new ReduceAction168(18),
-                       new ReduceAction169(18),
-                       new ReduceAction170(18),
-                       new ReduceAction171(18),
-                       new ReduceAction172(18),
-                       new ReduceAction173(18),
-                       new ReduceAction174(18),
-                       new ReduceAction175(19),
-                       new ReduceAction176(19),
-                       new ReduceAction177(19),
-                       new ReduceAction178(19),
-                       new ReduceAction179(20),
-                       new ReduceAction180(20),
-                       new ReduceAction181(20),
-                       new ReduceAction182(21),
-                       new ReduceAction183(22),
-                       new ReduceAction184(22),
-                       new ReduceAction185(22),
-                       new ReduceAction186(23),
-                       new ReduceAction187(24),
-                       new ReduceAction188(24),
-                       new ReduceAction189(24),
-                       new ReduceAction190(24),
-                       new ReduceAction191(24),
-                       new ReduceAction192(24),
-                       new ReduceAction193(25),
-                       new ReduceAction194(26),
-                       new ReduceAction195(26),
-                       new ReduceAction196(26),
-                       new ReduceAction197(26),
-                       new ReduceAction198(27),
-                       new ReduceAction199(27),
-                       new ReduceAction200(28),
-                       new ReduceAction200(29),
-                       new ReduceAction202(30),
-                       new ReduceAction203(30),
-                       new ReduceAction204(30),
-                       new ReduceAction205(30),
-                       new ReduceAction206(31),
-                       new ReduceAction207(31),
-                       new ReduceAction208(32),
-                       new ReduceAction209(32),
-                       new ReduceAction210(33),
-                       new ReduceAction205(34),
-                       new ReduceAction205(34),
-                       new ReduceAction213(34),
-                       new ReduceAction214(34),
-                       new ReduceAction215(34),
-                       new ReduceAction216(34),
-                       new ReduceAction217(34),
-                       new ReduceAction218(34),
-                       new ReduceAction219(34),
-                       new ReduceAction220(34),
-                       new ReduceAction221(34),
-                       new ReduceAction222(34),
-                       new ReduceAction223(34),
-                       new ReduceAction205(34),
-                       new ReduceAction205(34),
-                       new ReduceAction205(34),
-                       new ReduceAction205(34),
-                       new ReduceAction205(34),
-                       new ReduceAction205(34),
-                       new ReduceAction230(34),
-                       new ReduceAction231(34),
-                       new ReduceAction232(34),
-                       new ReduceAction233(34),
-                       new ReduceAction234(34),
-                       new ReduceAction235(34),
-                       new ReduceAction236(34),
-                       new ReduceAction237(34),
-                       new ReduceAction238(35),
-                       new ReduceAction239(36),
-                       new ReduceAction240(36),
-                       new ReduceAction241(37),
-                       new ReduceAction242(37),
-                       new ReduceAction243(37),
-                       new ReduceAction244(37),
-                       new ReduceAction245(37),
-                       new ReduceAction246(37),
-                       new ReduceAction247(38),
-                       new ReduceAction248(38),
-                       new ReduceAction249(38),
-                       new ReduceAction250(38),
-                       new ReduceAction251(39),
-                       new ReduceAction252(39),
-                       new ReduceAction253(40),
-                       new ReduceAction254(41),
-                       new ReduceAction255(41),
-                       new ReduceAction256(41),
-                       new ReduceAction257(41),
-                       new ReduceAction258(42),
-                       new ReduceAction259(42),
-                       new ReduceAction260(42),
-                       new ReduceAction261(42),
-                       new ReduceAction262(42),
-                       new ReduceAction263(42),
-                       new ReduceAction264(42),
-                       new ReduceAction265(42),
-                       new ReduceAction266(42),
-                       new ReduceAction267(42),
-                       new ReduceAction268(43),
-                       new ReduceAction269(43),
-                       new ReduceAction270(44),
-                       new ReduceAction271(44),
-                       new ReduceAction272(45),
-                       new ReduceAction273(45),
-                       new ReduceAction274(45),
-                       new ReduceAction275(45),
-                       new ReduceAction276(45),
-                       new ReduceAction210(46),
-                       new ReduceAction36(46),
-                       new ReduceAction279(47),
-                       new ReduceAction280(47),
-                       new ReduceAction281(48),
-                       new ReduceAction282(48),
-                       new ReduceAction283(49),
-                       new ReduceAction284(49),
-                       new ReduceAction285(50),
-                       new ReduceAction286(50),
-                       new ReduceAction287(50),
-                       new ReduceAction288(50),
-                       new ReduceAction289(51),
-                       new ReduceAction205(52),
-                       new ReduceAction232(52),
-                       new ReduceAction233(52),
-                       new ReduceAction293(52),
-                       new ReduceAction205(53),
-                       new ReduceAction295(53),
-                       new ReduceAction205(54),
-                       new ReduceAction297(54),
-                       new ReduceAction298(54),
-                       new ReduceAction299(54),
-                       new ReduceAction205(55),
-                       new ReduceAction301(55),
-                       new ReduceAction205(56),
-                       new ReduceAction303(56),
-                       new ReduceAction304(56),
-                       new ReduceAction305(56),
-                       new ReduceAction306(56),
-                       new ReduceAction307(56),
-                       new ReduceAction308(56),
-                       new ReduceAction309(56),
-                       new ReduceAction310(56),
-                       new ReduceAction311(56),
-                       new ReduceAction312(56),
-                       new ReduceAction313(56),
-                       new ReduceAction205(57),
-                       new ReduceAction315(57),
-                       new ReduceAction316(57),
-                       new ReduceAction205(58),
-                       new ReduceAction318(58),
-                       new ReduceAction319(58),
-                       new ReduceAction320(58),
-                       new ReduceAction205(59),
-                       new ReduceAction322(59),
-                       new ReduceAction323(59),
-                       new ReduceAction205(60),
-                       new ReduceAction325(60),
-                       new ReduceAction326(60),
-                       new ReduceAction327(60),
-                       new ReduceAction328(61),
-                       new ReduceAction329(61),
-                       new ReduceAction230(61),
-                       new ReduceAction231(61),
-                       new ReduceAction234(61),
-                       new ReduceAction235(61),
-                       new ReduceAction236(61),
-                       new ReduceAction237(61),
-                       new ReduceAction336(61),
-                       new ReduceAction337(61),
-                       new ReduceAction338(61),
-                       new ReduceAction339(61),
-                       new ReduceAction340(61),
-                       new ReduceAction341(61),
-                       new ReduceAction342(61),
-                       new ReduceAction343(61),
-                       new ReduceAction344(61),
-                       new ReduceAction345(61),
-                       new ReduceAction346(61),
-                       new ReduceAction347(61),
-                       new ReduceAction348(61),
-                       new ReduceAction205(61),
-                       new ReduceAction202(61),
-                       new ReduceAction351(61),
-                       new ReduceAction352(61),
-                       new ReduceAction353(62),
-                       new ReduceAction354(62),
-                       new ReduceAction355(63),
-                       new ReduceAction356(64),
-                       new ReduceAction355(65),
-                       new ReduceAction358(66),
-                       new ReduceAction359(67),
-                       new ReduceAction360(68),
-                       new ReduceAction361(68),
+                       new ReduceAction16(1),
+                       new ReduceAction17(2),
+                       new ReduceAction18(2),
+                       new ReduceAction19(3),
+                       new ReduceAction20(3),
+                       new ReduceAction21(4),
+                       new ReduceAction22(4),
+                       new ReduceAction23(4),
+                       new ReduceAction24(5),
+                       new ReduceAction24(5),
+                       new ReduceAction26(6),
+                       new ReduceAction27(6),
+                       new ReduceAction22(7),
+                       new ReduceAction29(7),
+                       new ReduceAction30(8),
+                       new ReduceAction31(8),
+                       new ReduceAction32(8),
+                       new ReduceAction33(8),
+                       new ReduceAction34(8),
+                       new ReduceAction35(9),
+                       new ReduceAction36(9),
+                       new ReduceAction37(9),
+                       new ReduceAction38(10),
+                       new ReduceAction39(11),
+                       new ReduceAction40(11),
+                       new ReduceAction41(12),
+                       new ReduceAction42(13),
+                       new ReduceAction43(13),
+                       new ReduceAction44(13),
+                       new ReduceAction45(14),
+                       new ReduceAction46(15),
+                       new ReduceAction47(15),
+                       new ReduceAction48(15),
+                       new ReduceAction49(15),
+                       new ReduceAction50(15),
+                       new ReduceAction51(15),
+                       new ReduceAction52(15),
+                       new ReduceAction53(15),
+                       new ReduceAction54(15),
+                       new ReduceAction55(15),
+                       new ReduceAction56(15),
+                       new ReduceAction57(15),
+                       new ReduceAction58(15),
+                       new ReduceAction59(15),
+                       new ReduceAction60(15),
+                       new ReduceAction61(15),
+                       new ReduceAction62(15),
+                       new ReduceAction63(15),
+                       new ReduceAction64(15),
+                       new ReduceAction65(15),
+                       new ReduceAction66(15),
+                       new ReduceAction67(15),
+                       new ReduceAction68(15),
+                       new ReduceAction69(15),
+                       new ReduceAction70(15),
+                       new ReduceAction71(15),
+                       new ReduceAction72(15),
+                       new ReduceAction72(15),
+                       new ReduceAction74(16),
+                       new ReduceAction75(16),
+                       new ReduceAction22(16),
+                       new ReduceAction74(17),
+                       new ReduceAction78(17),
+                       new ReduceAction79(18),
+                       new ReduceAction80(18),
+                       new ReduceAction81(18),
+                       new ReduceAction82(18),
+                       new ReduceAction83(18),
+                       new ReduceAction84(19),
+                       new ReduceAction85(19),
+                       new ReduceAction86(19),
+                       new ReduceAction87(19),
+                       new ReduceAction88(19),
+                       new ReduceAction89(19),
+                       new ReduceAction90(19),
+                       new ReduceAction91(19),
+                       new ReduceAction92(19),
+                       new ReduceAction93(19),
+                       new ReduceAction94(19),
+                       new ReduceAction95(19),
+                       new ReduceAction96(19),
+                       new ReduceAction97(19),
+                       new ReduceAction98(19),
+                       new ReduceAction99(19),
+                       new ReduceAction100(19),
+                       new ReduceAction101(19),
+                       new ReduceAction102(19),
+                       new ReduceAction103(20),
+                       new ReduceAction104(20),
+                       new ReduceAction105(20),
+                       new ReduceAction106(20),
+                       new ReduceAction107(21),
+                       new ReduceAction108(21),
+                       new ReduceAction37(21),
+                       new ReduceAction110(22),
+                       new ReduceAction111(23),
+                       new ReduceAction112(23),
+                       new ReduceAction113(23),
+                       new ReduceAction114(23),
+                       new ReduceAction115(23),
+                       new ReduceAction116(24),
+                       new ReduceAction117(24),
+                       new ReduceAction22(24),
+                       new ReduceAction119(25),
+                       new ReduceAction120(26),
+                       new ReduceAction120(26),
+                       new ReduceAction122(26),
+                       new ReduceAction123(27),
+                       new ReduceAction124(27),
+                       new ReduceAction125(27),
+                       new ReduceAction126(28),
+                       new ReduceAction127(28),
+                       new ReduceAction128(28),
+                       new ReduceAction129(28),
+                       new ReduceAction130(28),
+                       new ReduceAction131(28),
+                       new ReduceAction22(29),
+                       new ReduceAction133(29),
+                       new ReduceAction134(30),
+                       new ReduceAction135(31),
+                       new ReduceAction136(31),
+                       new ReduceAction137(32),
+                       new ReduceAction22(32),
+                       new ReduceAction139(33),
+                       new ReduceAction140(34),
+                       new ReduceAction141(34),
+                       new ReduceAction142(34),
+                       new ReduceAction143(34),
+                       new ReduceAction144(35),
+                       new ReduceAction145(35),
+                       new ReduceAction146(36),
+                       new ReduceAction146(37),
+                       new ReduceAction146(38),
+                       new ReduceAction22(38),
+                       new ReduceAction150(39),
+                       new ReduceAction151(39),
+                       new ReduceAction152(39),
+                       new ReduceAction153(39),
+                       new ReduceAction154(40),
+                       new ReduceAction155(40),
+                       new ReduceAction156(41),
+                       new ReduceAction157(41),
+                       new ReduceAction158(42),
+                       new ReduceAction159(42),
+                       new ReduceAction150(43),
+                       new ReduceAction153(44),
+                       new ReduceAction153(44),
+                       new ReduceAction163(44),
+                       new ReduceAction164(44),
+                       new ReduceAction165(44),
+                       new ReduceAction166(44),
+                       new ReduceAction167(44),
+                       new ReduceAction168(44),
+                       new ReduceAction169(44),
+                       new ReduceAction153(44),
+                       new ReduceAction153(44),
+                       new ReduceAction153(44),
+                       new ReduceAction153(44),
+                       new ReduceAction153(44),
+                       new ReduceAction153(44),
+                       new ReduceAction153(44),
+                       new ReduceAction177(44),
+                       new ReduceAction178(44),
+                       new ReduceAction179(44),
+                       new ReduceAction178(44),
+                       new ReduceAction181(44),
+                       new ReduceAction182(44),
+                       new ReduceAction183(44),
+                       new ReduceAction182(44),
+                       new ReduceAction185(44),
+                       new ReduceAction186(44),
+                       new ReduceAction187(44),
+                       new ReduceAction188(44),
+                       new ReduceAction189(44),
+                       new ReduceAction188(44),
+                       new ReduceAction191(44),
+                       new ReduceAction192(44),
+                       new ReduceAction191(44),
+                       new ReduceAction194(44),
+                       new ReduceAction195(45),
+                       new ReduceAction196(45),
+                       new ReduceAction197(46),
+                       new ReduceAction198(46),
+                       new ReduceAction199(46),
+                       new ReduceAction200(46),
+                       new ReduceAction201(47),
+                       new ReduceAction202(47),
+                       new ReduceAction203(47),
+                       new ReduceAction204(47),
+                       new ReduceAction205(47),
+                       new ReduceAction206(47),
+                       new ReduceAction207(47),
+                       new ReduceAction208(47),
+                       new ReduceAction205(47),
+                       new ReduceAction206(47),
+                       new ReduceAction211(47),
+                       new ReduceAction212(47),
+                       new ReduceAction213(47),
+                       new ReduceAction214(47),
+                       new ReduceAction215(47),
+                       new ReduceAction216(47),
+                       new ReduceAction213(47),
+                       new ReduceAction214(47),
+                       new ReduceAction219(47),
+                       new ReduceAction220(47),
+                       new ReduceAction221(47),
+                       new ReduceAction222(47),
+                       new ReduceAction223(47),
+                       new ReduceAction224(47),
+                       new ReduceAction225(47),
+                       new ReduceAction226(47),
+                       new ReduceAction227(47),
+                       new ReduceAction224(47),
+                       new ReduceAction225(47),
+                       new ReduceAction230(47),
+                       new ReduceAction231(47),
+                       new ReduceAction232(47),
+                       new ReduceAction233(47),
+                       new ReduceAction234(47),
+                       new ReduceAction235(47),
+                       new ReduceAction232(47),
+                       new ReduceAction233(47),
+                       new ReduceAction238(47),
+                       new ReduceAction239(48),
+                       new ReduceAction240(48),
+                       new ReduceAction241(49),
+                       new ReduceAction242(49),
+                       new ReduceAction243(50),
+                       new ReduceAction244(50),
+                       new ReduceAction245(50),
+                       new ReduceAction246(50),
+                       new ReduceAction247(50),
+                       new ReduceAction150(51),
+                       new ReduceAction152(51),
+                       new ReduceAction250(52),
+                       new ReduceAction251(52),
+                       new ReduceAction252(53),
+                       new ReduceAction253(53),
+                       new ReduceAction254(54),
+                       new ReduceAction255(54),
+                       new ReduceAction256(55),
+                       new ReduceAction257(55),
+                       new ReduceAction258(56),
+                       new ReduceAction259(56),
+                       new ReduceAction153(56),
+                       new ReduceAction261(57),
+                       new ReduceAction262(57),
+                       new ReduceAction263(57),
+                       new ReduceAction264(57),
+                       new ReduceAction265(58),
+                       new ReduceAction153(59),
+                       new ReduceAction267(59),
+                       new ReduceAction153(60),
+                       new ReduceAction269(60),
+                       new ReduceAction270(60),
+                       new ReduceAction271(60),
+                       new ReduceAction272(60),
+                       new ReduceAction153(61),
+                       new ReduceAction274(61),
+                       new ReduceAction153(62),
+                       new ReduceAction276(62),
+                       new ReduceAction277(62),
+                       new ReduceAction278(62),
+                       new ReduceAction279(62),
+                       new ReduceAction280(62),
+                       new ReduceAction281(62),
+                       new ReduceAction282(62),
+                       new ReduceAction283(62),
+                       new ReduceAction284(62),
+                       new ReduceAction285(62),
+                       new ReduceAction153(63),
+                       new ReduceAction287(63),
+                       new ReduceAction288(63),
+                       new ReduceAction153(64),
+                       new ReduceAction290(64),
+                       new ReduceAction291(64),
+                       new ReduceAction292(64),
+                       new ReduceAction153(65),
+                       new ReduceAction294(65),
+                       new ReduceAction153(66),
+                       new ReduceAction296(66),
+                       new ReduceAction297(66),
+                       new ReduceAction153(67),
+                       new ReduceAction299(67),
+                       new ReduceAction300(67),
+                       new ReduceAction301(67),
+                       new ReduceAction302(67),
+                       new ReduceAction153(68),
+                       new ReduceAction304(68),
+                       new ReduceAction305(68),
+                       new ReduceAction177(68),
+                       new ReduceAction307(68),
+                       new ReduceAction178(68),
+                       new ReduceAction309(68),
+                       new ReduceAction179(68),
+                       new ReduceAction311(68),
+                       new ReduceAction178(68),
+                       new ReduceAction309(68),
                        new ReduceAction181(68),
-                       new ReduceAction363(68),
-                       new ReduceAction360(69),
-                       new ReduceAction361(69),
-                       new ReduceAction366(69),
-                       new ReduceAction181(69),
-                       new ReduceAction363(69),
-                       new ReduceAction360(70),
-                       new ReduceAction361(70),
-                       new ReduceAction371(71),
-                       new ReduceAction372(72),
-                       new ReduceAction373(72),
-                       new ReduceAction374(73),
-                       new ReduceAction375(73),
-                       new ReduceAction376(74),
-                       new ReduceAction377(74),
-                       new ReduceAction378(74),
-                       new ReduceAction379(75),
-                       new ReduceAction380(76),
-                       new ReduceAction381(77),
-                       new ReduceAction381(77),
-                       new ReduceAction383(78),
-                       new ReduceAction384(78),
-                       new ReduceAction36(78),
-                       new ReduceAction386(79),
-                       new ReduceAction387(79),
-                       new ReduceAction388(80),
-                       new ReduceAction389(80),
-                       new ReduceAction381(80),
-                       new ReduceAction66(81),
-                       new ReduceAction67(82),
-                       new ReduceAction68(82),
-                       new ReduceAction69(82),
-                       new ReduceAction70(82),
-                       new ReduceAction71(82),
-                       new ReduceAction72(82),
-                       new ReduceAction77(82),
-                       new ReduceAction78(82),
-                       new ReduceAction79(82),
-                       new ReduceAction80(82),
-                       new ReduceAction167(83),
-                       new ReduceAction168(83),
-                       new ReduceAction169(83),
-                       new ReduceAction170(83),
-                       new ReduceAction194(84),
-                       new ReduceAction195(84),
-                       new ReduceAction205(85),
-                       new ReduceAction232(85),
-                       new ReduceAction233(85),
-                       new ReduceAction205(86),
-                       new ReduceAction295(86),
-                       new ReduceAction205(87),
-                       new ReduceAction297(87),
-                       new ReduceAction298(87),
-                       new ReduceAction299(87),
-                       new ReduceAction205(88),
-                       new ReduceAction301(88),
-                       new ReduceAction205(89),
-                       new ReduceAction303(89),
-                       new ReduceAction304(89),
-                       new ReduceAction305(89),
-                       new ReduceAction306(89),
-                       new ReduceAction307(89),
-                       new ReduceAction308(89),
-                       new ReduceAction309(89),
-                       new ReduceAction310(89),
-                       new ReduceAction311(89),
-                       new ReduceAction312(89),
-                       new ReduceAction313(89),
-                       new ReduceAction205(90),
-                       new ReduceAction315(90),
-                       new ReduceAction316(90),
-                       new ReduceAction205(91),
-                       new ReduceAction318(91),
-                       new ReduceAction319(91),
-                       new ReduceAction320(91),
-                       new ReduceAction205(92),
-                       new ReduceAction322(92),
-                       new ReduceAction323(92),
-                       new ReduceAction205(93),
-                       new ReduceAction325(93),
-                       new ReduceAction326(93),
-                       new ReduceAction327(93),
-                       new ReduceAction328(94),
-                       new ReduceAction329(94),
-                       new ReduceAction230(94),
-                       new ReduceAction231(94),
-                       new ReduceAction234(94),
-                       new ReduceAction235(94),
-                       new ReduceAction236(94),
-                       new ReduceAction237(94),
-                       new ReduceAction337(94),
-                       new ReduceAction341(94),
-                       new ReduceAction342(94),
-                       new ReduceAction343(94),
-                       new ReduceAction344(94),
-                       new ReduceAction345(94),
-                       new ReduceAction346(94),
-                       new ReduceAction347(94),
-                       new ReduceAction348(94),
-                       new ReduceAction205(94),
-                       new ReduceAction202(94),
-                       new ReduceAction351(94),
-                       new ReduceAction352(94),
-                       new ReduceAction202(95),
-                       new ReduceAction203(95),
-                       new ReduceAction204(95),
-                       new ReduceAction205(95),
-                       new ReduceAction205(96),
-                       new ReduceAction205(96),
-                       new ReduceAction213(96),
-                       new ReduceAction214(96),
-                       new ReduceAction215(96),
-                       new ReduceAction216(96),
-                       new ReduceAction217(96),
-                       new ReduceAction218(96),
-                       new ReduceAction219(96),
-                       new ReduceAction220(96),
-                       new ReduceAction221(96),
-                       new ReduceAction222(96),
-                       new ReduceAction223(96),
-                       new ReduceAction205(96),
-                       new ReduceAction205(96),
-                       new ReduceAction205(96),
-                       new ReduceAction205(96),
-                       new ReduceAction205(96),
-                       new ReduceAction205(96),
-                       new ReduceAction230(96),
-                       new ReduceAction231(96),
-                       new ReduceAction232(96),
-                       new ReduceAction233(96),
-                       new ReduceAction234(96),
-                       new ReduceAction235(96),
-                       new ReduceAction236(96),
-                       new ReduceAction237(96),
-                       new ReduceAction239(97),
-                       new ReduceAction240(97),
-                       new ReduceAction241(98),
-                       new ReduceAction242(98),
-                       new ReduceAction243(98),
-                       new ReduceAction244(98),
-                       new ReduceAction245(98),
-                       new ReduceAction246(98),
-                       new ReduceAction253(99),
-                       new ReduceAction254(100),
-                       new ReduceAction255(100),
-                       new ReduceAction256(100),
-                       new ReduceAction257(100),
-                       new ReduceAction258(101),
-                       new ReduceAction259(101),
-                       new ReduceAction260(101),
-                       new ReduceAction261(101),
-                       new ReduceAction262(101),
-                       new ReduceAction263(101),
-                       new ReduceAction264(101),
-                       new ReduceAction265(101),
-                       new ReduceAction266(101),
-                       new ReduceAction267(101),
-                       new ReduceAction270(102),
-                       new ReduceAction271(102),
-                       new ReduceAction272(103),
-                       new ReduceAction279(104),
-                       new ReduceAction280(104),
-                       new ReduceAction281(105),
-                       new ReduceAction282(105),
-                       new ReduceAction283(106),
-                       new ReduceAction284(106),
-                       new ReduceAction285(107),
-                       new ReduceAction286(107),
-                       new ReduceAction205(108),
-                       new ReduceAction232(108),
-                       new ReduceAction233(108),
-                       new ReduceAction293(108),
-                       new ReduceAction205(109),
-                       new ReduceAction232(109),
-                       new ReduceAction233(109),
-                       new ReduceAction202(110),
-                       new ReduceAction203(110),
-                       new ReduceAction204(110),
-                       new ReduceAction202(111),
-                       new ReduceAction203(111),
-                       new ReduceAction204(111),
-                       new ReduceAction205(112),
-                       new ReduceAction232(112),
-                       new ReduceAction233(112),
-                       new ReduceAction205(113),
-                       new ReduceAction295(113),
-                       new ReduceAction205(114),
-                       new ReduceAction297(114),
-                       new ReduceAction298(114),
-                       new ReduceAction299(114),
-                       new ReduceAction205(115),
-                       new ReduceAction301(115),
-                       new ReduceAction205(116),
-                       new ReduceAction303(116),
-                       new ReduceAction304(116),
-                       new ReduceAction305(116),
-                       new ReduceAction306(116),
-                       new ReduceAction307(116),
-                       new ReduceAction308(116),
-                       new ReduceAction309(116),
-                       new ReduceAction310(116),
-                       new ReduceAction311(116),
-                       new ReduceAction312(116),
-                       new ReduceAction313(116),
-                       new ReduceAction205(117),
-                       new ReduceAction315(117),
-                       new ReduceAction316(117),
-                       new ReduceAction205(118),
-                       new ReduceAction318(118),
-                       new ReduceAction319(118),
-                       new ReduceAction320(118),
-                       new ReduceAction205(119),
-                       new ReduceAction322(119),
-                       new ReduceAction323(119),
-                       new ReduceAction205(120),
-                       new ReduceAction325(120),
-                       new ReduceAction326(120),
-                       new ReduceAction327(120),
-                       new ReduceAction328(121),
-                       new ReduceAction329(121),
-                       new ReduceAction230(121),
-                       new ReduceAction231(121),
-                       new ReduceAction234(121),
-                       new ReduceAction235(121),
-                       new ReduceAction236(121),
-                       new ReduceAction237(121),
-                       new ReduceAction336(121),
-                       new ReduceAction337(121),
-                       new ReduceAction341(121),
-                       new ReduceAction342(121),
-                       new ReduceAction343(121),
-                       new ReduceAction344(121),
-                       new ReduceAction345(121),
-                       new ReduceAction346(121),
-                       new ReduceAction347(121),
-                       new ReduceAction348(121),
-                       new ReduceAction205(121),
-                       new ReduceAction351(121),
-                       new ReduceAction352(121),
-                       new ReduceAction205(122),
-                       new ReduceAction232(122),
-                       new ReduceAction233(122),
-                       new ReduceAction205(123),
-                       new ReduceAction295(123),
-                       new ReduceAction205(124),
-                       new ReduceAction297(124),
-                       new ReduceAction298(124),
-                       new ReduceAction299(124),
-                       new ReduceAction205(125),
-                       new ReduceAction301(125),
-                       new ReduceAction205(126),
-                       new ReduceAction303(126),
-                       new ReduceAction304(126),
-                       new ReduceAction305(126),
-                       new ReduceAction306(126),
-                       new ReduceAction307(126),
-                       new ReduceAction308(126),
-                       new ReduceAction309(126),
-                       new ReduceAction310(126),
-                       new ReduceAction311(126),
-                       new ReduceAction312(126),
-                       new ReduceAction313(126),
-                       new ReduceAction205(127),
-                       new ReduceAction315(127),
-                       new ReduceAction316(127),
-                       new ReduceAction205(128),
-                       new ReduceAction318(128),
-                       new ReduceAction319(128),
-                       new ReduceAction320(128),
-                       new ReduceAction205(129),
-                       new ReduceAction322(129),
-                       new ReduceAction323(129),
-                       new ReduceAction205(130),
+                       new ReduceAction315(68),
+                       new ReduceAction182(68),
+                       new ReduceAction317(68),
+                       new ReduceAction183(68),
+                       new ReduceAction319(68),
+                       new ReduceAction182(68),
+                       new ReduceAction317(68),
+                       new ReduceAction185(68),
+                       new ReduceAction323(68),
+                       new ReduceAction186(68),
+                       new ReduceAction325(68),
+                       new ReduceAction187(68),
+                       new ReduceAction327(68),
+                       new ReduceAction328(68),
+                       new ReduceAction329(68),
+                       new ReduceAction330(68),
+                       new ReduceAction331(68),
+                       new ReduceAction332(68),
+                       new ReduceAction333(68),
+                       new ReduceAction334(68),
+                       new ReduceAction331(68),
+                       new ReduceAction332(68),
+                       new ReduceAction337(68),
+                       new ReduceAction338(68),
+                       new ReduceAction339(68),
+                       new ReduceAction340(68),
+                       new ReduceAction341(69),
+                       new ReduceAction342(69),
+                       new ReduceAction343(69),
+                       new ReduceAction344(69),
+                       new ReduceAction345(69),
+                       new ReduceAction346(69),
+                       new ReduceAction347(69),
+                       new ReduceAction348(69),
+                       new ReduceAction349(69),
+                       new ReduceAction153(69),
+                       new ReduceAction153(69),
+                       new ReduceAction352(69),
+                       new ReduceAction353(69),
+                       new ReduceAction354(69),
+                       new ReduceAction355(70),
+                       new ReduceAction355(70),
+                       new ReduceAction357(71),
+                       new ReduceAction358(72),
+                       new ReduceAction359(73),
+                       new ReduceAction360(73),
+                       new ReduceAction358(74),
+                       new ReduceAction362(75),
+                       new ReduceAction255(75),
+                       new ReduceAction364(75),
+                       new ReduceAction365(76),
+                       new ReduceAction366(76),
+                       new ReduceAction367(77),
+                       new ReduceAction368(77),
+                       new ReduceAction369(78),
+                       new ReduceAction367(79),
+                       new ReduceAction368(79),
+                       new ReduceAction372(80),
+                       new ReduceAction373(81),
+                       new ReduceAction374(82),
+                       new ReduceAction375(82),
+                       new ReduceAction376(83),
+                       new ReduceAction22(83),
+                       new ReduceAction378(84),
+                       new ReduceAction379(84),
+                       new ReduceAction380(85),
+                       new ReduceAction381(86),
+                       new ReduceAction382(86),
+                       new ReduceAction378(87),
+                       new ReduceAction379(87),
+                       new ReduceAction385(87),
+                       new ReduceAction153(88),
+                       new ReduceAction387(89),
+                       new ReduceAction380(90),
+                       new ReduceAction389(91),
+                       new ReduceAction390(91),
+                       new ReduceAction391(91),
+                       new ReduceAction392(91),
+                       new ReduceAction393(91),
+                       new ReduceAction394(92),
+                       new ReduceAction395(92),
+                       new ReduceAction396(92),
+                       new ReduceAction397(92),
+                       new ReduceAction398(92),
+                       new ReduceAction359(93),
+                       new ReduceAction360(93),
+                       new ReduceAction358(94),
+                       new ReduceAction402(95),
+                       new ReduceAction153(95),
+                       new ReduceAction153(95),
+                       new ReduceAction405(95),
+                       new ReduceAction406(95),
+                       new ReduceAction407(95),
+                       new ReduceAction408(96),
+                       new ReduceAction409(96),
+                       new ReduceAction410(96),
+                       new ReduceAction411(97),
+                       new ReduceAction412(97),
+                       new ReduceAction411(98),
+                       new ReduceAction414(98),
+                       new ReduceAction412(98),
+                       new ReduceAction416(98),
+                       new ReduceAction417(99),
+                       new ReduceAction418(100),
+                       new ReduceAction368(101),
+                       new ReduceAction420(101),
+                       new ReduceAction421(102),
+                       new ReduceAction422(103),
+                       new ReduceAction423(103),
+                       new ReduceAction424(104),
+                       new ReduceAction425(104),
+                       new ReduceAction426(105),
+                       new ReduceAction427(105),
+                       new ReduceAction428(105),
+                       new ReduceAction429(105),
+                       new ReduceAction430(106),
+                       new ReduceAction431(106),
+                       new ReduceAction432(106),
+                       new ReduceAction22(106),
+                       new ReduceAction434(107),
+                       new ReduceAction435(107),
+                       new ReduceAction436(107),
+                       new ReduceAction435(107),
+                       new ReduceAction438(108),
+                       new ReduceAction439(108),
+                       new ReduceAction440(108),
+                       new ReduceAction439(108),
+                       new ReduceAction442(109),
+                       new ReduceAction443(110),
+                       new ReduceAction22(111),
+                       new ReduceAction445(111),
+                       new ReduceAction446(112),
+                       new ReduceAction446(112),
+                       new ReduceAction448(113),
+                       new ReduceAction449(113),
+                       new ReduceAction23(113),
+                       new ReduceAction22(114),
+                       new ReduceAction452(114),
+                       new ReduceAction453(115),
+                       new ReduceAction454(115),
+                       new ReduceAction446(115),
+                       new ReduceAction46(116),
+                       new ReduceAction47(116),
+                       new ReduceAction48(116),
+                       new ReduceAction55(116),
+                       new ReduceAction56(116),
+                       new ReduceAction74(117),
+                       new ReduceAction75(117),
+                       new ReduceAction84(118),
+                       new ReduceAction85(118),
+                       new ReduceAction86(118),
+                       new ReduceAction87(118),
+                       new ReduceAction88(118),
+                       new ReduceAction89(118),
+                       new ReduceAction90(118),
+                       new ReduceAction91(118),
+                       new ReduceAction92(118),
+                       new ReduceAction93(118),
+                       new ReduceAction94(118),
+                       new ReduceAction95(118),
+                       new ReduceAction96(118),
+                       new ReduceAction97(118),
+                       new ReduceAction98(118),
+                       new ReduceAction99(118),
+                       new ReduceAction100(118),
+                       new ReduceAction101(118),
+                       new ReduceAction438(119),
+                       new ReduceAction439(119),
+                       new ReduceAction440(119),
+                       new ReduceAction439(119),
+                       new ReduceAction140(120),
+                       new ReduceAction141(120),
+                       new ReduceAction153(121),
+                       new ReduceAction267(121),
+                       new ReduceAction153(122),
+                       new ReduceAction269(122),
+                       new ReduceAction270(122),
+                       new ReduceAction271(122),
+                       new ReduceAction272(122),
+                       new ReduceAction153(123),
+                       new ReduceAction274(123),
+                       new ReduceAction153(124),
+                       new ReduceAction276(124),
+                       new ReduceAction277(124),
+                       new ReduceAction278(124),
+                       new ReduceAction279(124),
+                       new ReduceAction280(124),
+                       new ReduceAction281(124),
+                       new ReduceAction282(124),
+                       new ReduceAction283(124),
+                       new ReduceAction284(124),
+                       new ReduceAction285(124),
+                       new ReduceAction153(125),
+                       new ReduceAction287(125),
+                       new ReduceAction288(125),
+                       new ReduceAction153(126),
+                       new ReduceAction290(126),
+                       new ReduceAction291(126),
+                       new ReduceAction292(126),
+                       new ReduceAction153(127),
+                       new ReduceAction294(127),
+                       new ReduceAction153(128),
+                       new ReduceAction296(128),
+                       new ReduceAction297(128),
+                       new ReduceAction153(129),
+                       new ReduceAction299(129),
+                       new ReduceAction300(129),
+                       new ReduceAction301(129),
+                       new ReduceAction302(129),
+                       new ReduceAction153(130),
+                       new ReduceAction304(130),
+                       new ReduceAction305(130),
+                       new ReduceAction177(130),
+                       new ReduceAction181(130),
+                       new ReduceAction307(130),
+                       new ReduceAction315(130),
+                       new ReduceAction178(130),
+                       new ReduceAction182(130),
+                       new ReduceAction309(130),
+                       new ReduceAction317(130),
+                       new ReduceAction179(130),
+                       new ReduceAction183(130),
+                       new ReduceAction311(130),
+                       new ReduceAction319(130),
+                       new ReduceAction178(130),
+                       new ReduceAction182(130),
+                       new ReduceAction309(130),
+                       new ReduceAction317(130),
+                       new ReduceAction185(130),
+                       new ReduceAction323(130),
+                       new ReduceAction186(130),
+                       new ReduceAction187(130),
                        new ReduceAction325(130),
-                       new ReduceAction637(130),
-                       new ReduceAction638(131),
-                       new ReduceAction639(131),
-                       new ReduceAction234(131),
-                       new ReduceAction235(131),
-                       new ReduceAction642(131),
-                       new ReduceAction337(131),
+                       new ReduceAction327(130),
+                       new ReduceAction329(130),
+                       new ReduceAction330(130),
+                       new ReduceAction331(130),
+                       new ReduceAction332(130),
+                       new ReduceAction333(130),
+                       new ReduceAction334(130),
+                       new ReduceAction331(130),
+                       new ReduceAction332(130),
+                       new ReduceAction337(130),
+                       new ReduceAction338(130),
+                       new ReduceAction339(130),
+                       new ReduceAction340(130),
                        new ReduceAction341(131),
                        new ReduceAction342(131),
                        new ReduceAction343(131),
@@ -804,328 +579,671 @@ class Parser
                        new ReduceAction346(131),
                        new ReduceAction347(131),
                        new ReduceAction348(131),
-                       new ReduceAction205(131),
-                       new ReduceAction351(131),
-                       new ReduceAction352(131),
-                       new ReduceAction655(132),
-                       new ReduceAction656(132),
-                       new ReduceAction205(133),
-                       new ReduceAction232(133),
-                       new ReduceAction233(133),
+                       new ReduceAction349(131),
+                       new ReduceAction153(131),
+                       new ReduceAction153(131),
+                       new ReduceAction140(132),
+                       new ReduceAction141(132),
+                       new ReduceAction142(132),
+                       new ReduceAction143(132),
+                       new ReduceAction153(133),
+                       new ReduceAction153(133),
+                       new ReduceAction163(133),
+                       new ReduceAction164(133),
+                       new ReduceAction165(133),
+                       new ReduceAction166(133),
+                       new ReduceAction167(133),
+                       new ReduceAction168(133),
+                       new ReduceAction169(133),
+                       new ReduceAction153(133),
+                       new ReduceAction153(133),
+                       new ReduceAction153(133),
+                       new ReduceAction153(133),
+                       new ReduceAction153(133),
+                       new ReduceAction153(133),
+                       new ReduceAction153(133),
+                       new ReduceAction177(133),
+                       new ReduceAction178(133),
+                       new ReduceAction179(133),
+                       new ReduceAction178(133),
+                       new ReduceAction181(133),
+                       new ReduceAction182(133),
+                       new ReduceAction183(133),
+                       new ReduceAction182(133),
+                       new ReduceAction185(133),
+                       new ReduceAction186(133),
+                       new ReduceAction187(133),
+                       new ReduceAction188(133),
+                       new ReduceAction189(133),
+                       new ReduceAction188(133),
+                       new ReduceAction191(133),
+                       new ReduceAction192(133),
+                       new ReduceAction191(133),
+                       new ReduceAction194(133),
+                       new ReduceAction201(134),
+                       new ReduceAction202(134),
+                       new ReduceAction203(134),
+                       new ReduceAction204(134),
+                       new ReduceAction205(134),
+                       new ReduceAction206(134),
+                       new ReduceAction207(134),
+                       new ReduceAction208(134),
                        new ReduceAction205(134),
+                       new ReduceAction206(134),
+                       new ReduceAction211(134),
+                       new ReduceAction212(134),
+                       new ReduceAction213(134),
+                       new ReduceAction214(134),
+                       new ReduceAction215(134),
+                       new ReduceAction216(134),
+                       new ReduceAction213(134),
+                       new ReduceAction214(134),
+                       new ReduceAction219(134),
+                       new ReduceAction220(134),
+                       new ReduceAction221(134),
+                       new ReduceAction222(134),
+                       new ReduceAction223(134),
+                       new ReduceAction224(134),
+                       new ReduceAction225(134),
+                       new ReduceAction226(134),
+                       new ReduceAction227(134),
+                       new ReduceAction224(134),
+                       new ReduceAction225(134),
+                       new ReduceAction230(134),
+                       new ReduceAction231(134),
                        new ReduceAction232(134),
                        new ReduceAction233(134),
-                       new ReduceAction663(135),
-                       new ReduceAction664(135),
-                       new ReduceAction665(136),
-                       new ReduceAction666(136),
-                       new ReduceAction667(137),
-                       new ReduceAction668(137),
-                       new ReduceAction669(138),
-                       new ReduceAction670(138),
-                       new ReduceAction667(139),
-                       new ReduceAction668(139),
-                       new ReduceAction673(140),
-                       new ReduceAction674(140),
-                       new ReduceAction675(141),
-                       new ReduceAction676(141),
-                       new ReduceAction677(142),
-                       new ReduceAction678(142),
-                       new ReduceAction198(143),
-                       new ReduceAction680(143),
-                       new ReduceAction366(144),
-                       new ReduceAction682(144),
-                       new ReduceAction373(145),
-                       new ReduceAction684(145),
-                       new ReduceAction366(146),
-                       new ReduceAction682(146),
-                       new ReduceAction374(147),
-                       new ReduceAction688(147),
-                       new ReduceAction689(148),
-                       new ReduceAction690(148),
-                       new ReduceAction691(149),
-                       new ReduceAction692(149)
+                       new ReduceAction234(134),
+                       new ReduceAction235(134),
+                       new ReduceAction232(134),
+                       new ReduceAction233(134),
+                       new ReduceAction238(134),
+                       new ReduceAction153(135),
+                       new ReduceAction267(135),
+                       new ReduceAction153(136),
+                       new ReduceAction269(136),
+                       new ReduceAction270(136),
+                       new ReduceAction271(136),
+                       new ReduceAction272(136),
+                       new ReduceAction153(137),
+                       new ReduceAction274(137),
+                       new ReduceAction153(138),
+                       new ReduceAction276(138),
+                       new ReduceAction277(138),
+                       new ReduceAction278(138),
+                       new ReduceAction279(138),
+                       new ReduceAction280(138),
+                       new ReduceAction281(138),
+                       new ReduceAction282(138),
+                       new ReduceAction283(138),
+                       new ReduceAction284(138),
+                       new ReduceAction285(138),
+                       new ReduceAction153(139),
+                       new ReduceAction287(139),
+                       new ReduceAction288(139),
+                       new ReduceAction153(140),
+                       new ReduceAction290(140),
+                       new ReduceAction291(140),
+                       new ReduceAction292(140),
+                       new ReduceAction153(141),
+                       new ReduceAction294(141),
+                       new ReduceAction153(142),
+                       new ReduceAction296(142),
+                       new ReduceAction297(142),
+                       new ReduceAction153(143),
+                       new ReduceAction299(143),
+                       new ReduceAction300(143),
+                       new ReduceAction301(143),
+                       new ReduceAction302(143),
+                       new ReduceAction153(144),
+                       new ReduceAction304(144),
+                       new ReduceAction305(144),
+                       new ReduceAction177(144),
+                       new ReduceAction307(144),
+                       new ReduceAction178(144),
+                       new ReduceAction309(144),
+                       new ReduceAction179(144),
+                       new ReduceAction311(144),
+                       new ReduceAction178(144),
+                       new ReduceAction309(144),
+                       new ReduceAction181(144),
+                       new ReduceAction315(144),
+                       new ReduceAction182(144),
+                       new ReduceAction317(144),
+                       new ReduceAction183(144),
+                       new ReduceAction319(144),
+                       new ReduceAction182(144),
+                       new ReduceAction317(144),
+                       new ReduceAction185(144),
+                       new ReduceAction323(144),
+                       new ReduceAction186(144),
+                       new ReduceAction325(144),
+                       new ReduceAction187(144),
+                       new ReduceAction327(144),
+                       new ReduceAction328(144),
+                       new ReduceAction329(144),
+                       new ReduceAction330(144),
+                       new ReduceAction331(144),
+                       new ReduceAction332(144),
+                       new ReduceAction333(144),
+                       new ReduceAction334(144),
+                       new ReduceAction331(144),
+                       new ReduceAction332(144),
+                       new ReduceAction337(144),
+                       new ReduceAction338(144),
+                       new ReduceAction339(144),
+                       new ReduceAction340(144),
+                       new ReduceAction341(145),
+                       new ReduceAction342(145),
+                       new ReduceAction343(145),
+                       new ReduceAction344(145),
+                       new ReduceAction345(145),
+                       new ReduceAction346(145),
+                       new ReduceAction347(145),
+                       new ReduceAction348(145),
+                       new ReduceAction349(145),
+                       new ReduceAction153(145),
+                       new ReduceAction374(146),
+                       new ReduceAction375(146),
+                       new ReduceAction376(147),
+                       new ReduceAction22(147),
+                       new ReduceAction378(148),
+                       new ReduceAction378(149),
+                       new ReduceAction359(150),
+                       new ReduceAction360(150),
+                       new ReduceAction402(151),
+                       new ReduceAction153(151),
+                       new ReduceAction153(151),
+                       new ReduceAction405(151),
+                       new ReduceAction406(151),
+                       new ReduceAction140(152),
+                       new ReduceAction141(152),
+                       new ReduceAction153(153),
+                       new ReduceAction267(153),
+                       new ReduceAction153(154),
+                       new ReduceAction269(154),
+                       new ReduceAction270(154),
+                       new ReduceAction271(154),
+                       new ReduceAction272(154),
+                       new ReduceAction153(155),
+                       new ReduceAction274(155),
+                       new ReduceAction153(156),
+                       new ReduceAction276(156),
+                       new ReduceAction277(156),
+                       new ReduceAction278(156),
+                       new ReduceAction279(156),
+                       new ReduceAction280(156),
+                       new ReduceAction281(156),
+                       new ReduceAction282(156),
+                       new ReduceAction283(156),
+                       new ReduceAction284(156),
+                       new ReduceAction285(156),
+                       new ReduceAction153(157),
+                       new ReduceAction287(157),
+                       new ReduceAction288(157),
+                       new ReduceAction153(158),
+                       new ReduceAction290(158),
+                       new ReduceAction291(158),
+                       new ReduceAction292(158),
+                       new ReduceAction153(159),
+                       new ReduceAction294(159),
+                       new ReduceAction153(160),
+                       new ReduceAction296(160),
+                       new ReduceAction297(160),
+                       new ReduceAction153(161),
+                       new ReduceAction299(161),
+                       new ReduceAction300(161),
+                       new ReduceAction783(161),
+                       new ReduceAction153(162),
+                       new ReduceAction785(162),
+                       new ReduceAction786(162),
+                       new ReduceAction787(162),
+                       new ReduceAction788(162),
+                       new ReduceAction789(162),
+                       new ReduceAction177(162),
+                       new ReduceAction307(162),
+                       new ReduceAction788(162),
+                       new ReduceAction789(162),
+                       new ReduceAction185(162),
+                       new ReduceAction323(162),
+                       new ReduceAction796(162),
+                       new ReduceAction797(162),
+                       new ReduceAction329(162),
+                       new ReduceAction330(162),
+                       new ReduceAction331(162),
+                       new ReduceAction332(162),
+                       new ReduceAction333(162),
+                       new ReduceAction334(162),
+                       new ReduceAction331(162),
+                       new ReduceAction332(162),
+                       new ReduceAction337(162),
+                       new ReduceAction338(162),
+                       new ReduceAction339(162),
+                       new ReduceAction340(162),
+                       new ReduceAction341(163),
+                       new ReduceAction342(163),
+                       new ReduceAction343(163),
+                       new ReduceAction344(163),
+                       new ReduceAction345(163),
+                       new ReduceAction346(163),
+                       new ReduceAction347(163),
+                       new ReduceAction348(163),
+                       new ReduceAction349(163),
+                       new ReduceAction153(163),
+                       new ReduceAction820(164),
+                       new ReduceAction821(164),
+                       new ReduceAction150(165),
+                       new ReduceAction151(165),
+                       new ReduceAction152(165),
+                       new ReduceAction153(165),
+                       new ReduceAction153(166),
+                       new ReduceAction153(166),
+                       new ReduceAction163(166),
+                       new ReduceAction164(166),
+                       new ReduceAction165(166),
+                       new ReduceAction166(166),
+                       new ReduceAction167(166),
+                       new ReduceAction168(166),
+                       new ReduceAction169(166),
+                       new ReduceAction153(166),
+                       new ReduceAction153(166),
+                       new ReduceAction153(166),
+                       new ReduceAction153(166),
+                       new ReduceAction153(166),
+                       new ReduceAction153(166),
+                       new ReduceAction153(166),
+                       new ReduceAction177(166),
+                       new ReduceAction178(166),
+                       new ReduceAction179(166),
+                       new ReduceAction178(166),
+                       new ReduceAction181(166),
+                       new ReduceAction182(166),
+                       new ReduceAction183(166),
+                       new ReduceAction182(166),
+                       new ReduceAction185(166),
+                       new ReduceAction186(166),
+                       new ReduceAction187(166),
+                       new ReduceAction188(166),
+                       new ReduceAction189(166),
+                       new ReduceAction188(166),
+                       new ReduceAction191(166),
+                       new ReduceAction192(166),
+                       new ReduceAction191(166),
+                       new ReduceAction194(166),
+                       new ReduceAction241(167),
+                       new ReduceAction242(167),
+                       new ReduceAction243(168),
+                       new ReduceAction250(169),
+                       new ReduceAction251(169),
+                       new ReduceAction252(170),
+                       new ReduceAction253(170),
+                       new ReduceAction254(171),
+                       new ReduceAction255(171),
+                       new ReduceAction256(172),
+                       new ReduceAction257(172),
+                       new ReduceAction261(173),
+                       new ReduceAction262(173),
+                       new ReduceAction153(174),
+                       new ReduceAction153(174),
+                       new ReduceAction163(174),
+                       new ReduceAction164(174),
+                       new ReduceAction165(174),
+                       new ReduceAction166(174),
+                       new ReduceAction167(174),
+                       new ReduceAction168(174),
+                       new ReduceAction169(174),
+                       new ReduceAction153(174),
+                       new ReduceAction153(174),
+                       new ReduceAction153(174),
+                       new ReduceAction153(174),
+                       new ReduceAction153(174),
+                       new ReduceAction153(174),
+                       new ReduceAction153(174),
+                       new ReduceAction177(174),
+                       new ReduceAction178(174),
+                       new ReduceAction179(174),
+                       new ReduceAction178(174),
+                       new ReduceAction181(174),
+                       new ReduceAction182(174),
+                       new ReduceAction183(174),
+                       new ReduceAction182(174),
+                       new ReduceAction185(174),
+                       new ReduceAction186(174),
+                       new ReduceAction187(174),
+                       new ReduceAction188(174),
+                       new ReduceAction189(174),
+                       new ReduceAction188(174),
+                       new ReduceAction191(174),
+                       new ReduceAction192(174),
+                       new ReduceAction191(174),
+                       new ReduceAction194(174),
+                       new ReduceAction150(175),
+                       new ReduceAction151(175),
+                       new ReduceAction152(175),
+                       new ReduceAction150(176),
+                       new ReduceAction151(176),
+                       new ReduceAction152(176),
+                       new ReduceAction153(177),
+                       new ReduceAction153(177),
+                       new ReduceAction163(177),
+                       new ReduceAction164(177),
+                       new ReduceAction165(177),
+                       new ReduceAction166(177),
+                       new ReduceAction167(177),
+                       new ReduceAction168(177),
+                       new ReduceAction169(177),
+                       new ReduceAction153(177),
+                       new ReduceAction153(177),
+                       new ReduceAction153(177),
+                       new ReduceAction153(177),
+                       new ReduceAction153(177),
+                       new ReduceAction153(177),
+                       new ReduceAction194(177),
+                       new ReduceAction153(178),
+                       new ReduceAction153(178),
+                       new ReduceAction163(178),
+                       new ReduceAction164(178),
+                       new ReduceAction165(178),
+                       new ReduceAction166(178),
+                       new ReduceAction167(178),
+                       new ReduceAction168(178),
+                       new ReduceAction169(178),
+                       new ReduceAction153(178),
+                       new ReduceAction153(178),
+                       new ReduceAction153(178),
+                       new ReduceAction153(178),
+                       new ReduceAction153(178),
+                       new ReduceAction153(178),
+                       new ReduceAction194(178),
+                       new ReduceAction153(179),
+                       new ReduceAction153(179),
+                       new ReduceAction163(179),
+                       new ReduceAction164(179),
+                       new ReduceAction165(179),
+                       new ReduceAction166(179),
+                       new ReduceAction167(179),
+                       new ReduceAction168(179),
+                       new ReduceAction169(179),
+                       new ReduceAction153(179),
+                       new ReduceAction153(179),
+                       new ReduceAction153(179),
+                       new ReduceAction153(179),
+                       new ReduceAction153(179),
+                       new ReduceAction153(179),
+                       new ReduceAction194(179),
+                       new ReduceAction153(180),
+                       new ReduceAction153(180),
+                       new ReduceAction163(180),
+                       new ReduceAction164(180),
+                       new ReduceAction165(180),
+                       new ReduceAction166(180),
+                       new ReduceAction167(180),
+                       new ReduceAction168(180),
+                       new ReduceAction169(180),
+                       new ReduceAction153(180),
+                       new ReduceAction153(180),
+                       new ReduceAction153(180),
+                       new ReduceAction153(180),
+                       new ReduceAction153(180),
+                       new ReduceAction153(180),
+                       new ReduceAction194(180),
+                       new ReduceAction408(181),
+                       new ReduceAction410(181),
+                       new ReduceAction979(182),
+                       new ReduceAction980(182),
+                       new ReduceAction981(183),
+                       new ReduceAction982(183),
+                       new ReduceAction983(184),
+                       new ReduceAction984(184),
+                       new ReduceAction985(185),
+                       new ReduceAction986(185),
+                       new ReduceAction43(186),
+                       new ReduceAction988(186),
+                       new ReduceAction989(187),
+                       new ReduceAction990(187),
+                       new ReduceAction991(188),
+                       new ReduceAction992(188),
+                       new ReduceAction144(189),
+                       new ReduceAction994(189),
+                       new ReduceAction359(190),
+                       new ReduceAction996(190),
+                       new ReduceAction359(191),
+                       new ReduceAction996(191),
+                       new ReduceAction359(192),
+                       new ReduceAction996(192),
+                       new ReduceAction423(193),
+                       new ReduceAction1002(193),
+                       new ReduceAction381(194),
+                       new ReduceAction1004(194),
+                       new ReduceAction381(195),
+                       new ReduceAction1004(195),
+                       new ReduceAction359(196),
+                       new ReduceAction996(196),
+                       new ReduceAction359(197),
+                       new ReduceAction996(197),
+                       new ReduceAction424(198),
+                       new ReduceAction1012(198),
+                       new ReduceAction1013(199),
+                       new ReduceAction1014(199),
+                       new ReduceAction1015(200),
+                       new ReduceAction1016(200)
                )
        end
 end
 
-redef class Prod
-       # Location on the first token after the start of a production
-       # So outside the production for epilon production
-       var _first_location: nullable Location
-
-       # Location of the last token before the end of a production
-       # So outside the production for epilon production
-       var _last_location: nullable Location
-end
-
-# Find location of production nodes
-# Uses existing token locations to infer location of productions.
-private class ComputeProdLocationVisitor
-       super Visitor
-       # Currenlty visited productions that need a first token
-       var _need_first_prods: Array[Prod] = new Array[Prod]
-
-       # Already visited epsilon productions that waits something after them
-       var _need_after_epsilons: Array[Prod] = new Array[Prod]
-
-       # Already visited epsilon production that waits something before them
-       var _need_before_epsilons: Array[Prod] = new Array[Prod]
-
-       # Location of the last visited token in the current production
-       var _last_location: nullable Location = null
-
-       redef fun visit(n: nullable ANode)
-       do
-               if n == null then
-                       return
-               else if n isa Token then
-                       var loc = n.location
-                       _last_location = loc
-
-                       # Add a first token to productions that need one
-                       for no in _need_first_prods do
-                               no._first_location = loc
-                       end
-                       _need_first_prods.clear
-
-                       # Find location for already visited epsilon production that need one
-                       for no in _need_after_epsilons do
-                               # Epsilon production that is in the middle of a non-epsilon production
-                               # The epsilon production has both a token before and after it
-                               var endl = loc
-                               var startl = no._last_location
-                               no.location = new Location(endl.file, startl.line_end, endl.line_start, startl.column_end, endl.column_start)
-                       end
-                       _need_after_epsilons.clear
-               else
-                       assert n isa Prod
-                       _need_first_prods.add(n)
-
-                       var old_last = _last_location
-                       _last_location = null
-                       n.visit_all(self)
-                       var endl = _last_location
-                       if endl == null then _last_location = old_last
-
-                       n._last_location = endl
-                       var startl = n._first_location
-                       if startl != null then
-                               # Non-epsilon production
-                               assert endl != null
-
-                               n.location = new Location(startl.file, startl.line_start, endl.line_end, startl.column_start, endl.column_end)
-
-                               for no in _need_before_epsilons do
-                                       # Epsilon production that starts the current non-epsilon production
-                                       #var startl = n.location
-                                       no.location = new Location(startl.file, startl.line_start, startl.line_start, startl.column_start, startl.column_start)
-                               end
-                               _need_before_epsilons.clear
-
-                               for no in _need_after_epsilons do
-                                       # Epsilon production that finishes the current non-epsilon production
-                                       #var endl = n.location
-                                       no.location = new Location(endl.file, endl.line_end, endl.line_end, endl.column_end, endl.column_end)
-                               end
-                               _need_after_epsilons.clear
-                       else
-                               # No first token means epsilon production (or "throw all my tokens" production)
-                               # So, it must be located it later
-                               if endl == null then
-                                       # Epsilon production that starts a parent non-epsilon production
-                                       _need_before_epsilons.add(n)
-                               else
-                                       # Epsilon production in the middle or that finishes a parent non-epsilon production
-                                       _need_after_epsilons.add(n)
-                               end
-                       end
-               end
-       end
-
-       init do end
-end
-
-# Each reduca action has its own class, this one is the root of the hierarchy.
-private abstract class ReduceAction
-       fun action(p: Parser) is abstract
-       fun concat(l1, l2 : Array[Object]): Array[Object]
-       do
-               if l1.is_empty then return l2
-               l1.append(l2)
-               return l1
-       end
-end
-
 private class ReduceAction0
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode4 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var pclassdefnode5 = nodearraylist1
+                                       assert pclassdefnode5 isa nullable AClassdef
+                                       if pclassdefnode5 != null then
+                                               listnode6.add(pclassdefnode5)
+                                       end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
-                                               listnode4
+                                               listnode4,
+                                               listnode6
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction1
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode4 = new Array[Object]
+                                       var listnode6 = new Array[Object]
                                        var pmoduledeclnode2 = nodearraylist1
                                        assert pmoduledeclnode2 isa nullable AModuledecl
+                                       var pclassdefnode5 = nodearraylist2
+                                       assert pclassdefnode5 isa nullable AClassdef
+                                       if pclassdefnode5 != null then
+                                               listnode6.add(pclassdefnode5)
+                                       end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                pmoduledeclnode2,
                                                listnode3,
-                                               listnode4
+                                               listnode4,
+                                               listnode6
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction2
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        listnode4 = concat(listnode4, listnode3)
+                                       var pclassdefnode6 = nodearraylist2
+                                       assert pclassdefnode6 isa nullable AClassdef
+                                       if pclassdefnode6 != null then
+                                               listnode7.add(pclassdefnode6)
+                                       end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
-                                               listnode5
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction3
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pmoduledeclnode2 = nodearraylist1
                                        assert pmoduledeclnode2 isa nullable AModuledecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
                                        listnode4 = concat(listnode4, listnode3)
+                                       var pclassdefnode6 = nodearraylist3
+                                       assert pclassdefnode6 isa nullable AClassdef
+                                       if pclassdefnode6 != null then
+                                               listnode7.add(pclassdefnode6)
+                                       end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                pmoduledeclnode2,
                                                listnode4,
-                                               listnode5
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction4
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        listnode5 = concat(listnode5, listnode4)
+                                       var pclassdefnode6 = nodearraylist2
+                                       assert pclassdefnode6 isa nullable AClassdef
+                                       if pclassdefnode6 != null then
+                                               listnode7.add(pclassdefnode6)
+                                       end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction5
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pmoduledeclnode2 = nodearraylist1
                                        assert pmoduledeclnode2 isa nullable AModuledecl
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        listnode5 = concat(listnode5, listnode4)
+                                       var pclassdefnode6 = nodearraylist3
+                                       assert pclassdefnode6 isa nullable AClassdef
+                                       if pclassdefnode6 != null then
+                                               listnode7.add(pclassdefnode6)
+                                       end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                pmoduledeclnode2,
                                                listnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction6
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
+                                       var listnode8 = new Array[Object]
                                        var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        listnode4 = concat(listnode4, listnode3)
                                        var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        listnode6 = concat(listnode6, listnode5)
+                                       var pclassdefnode7 = nodearraylist3
+                                       assert pclassdefnode7 isa nullable AClassdef
+                                       if pclassdefnode7 != null then
+                                               listnode8.add(pclassdefnode7)
+                                       end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
-                                               listnode6
+                                               listnode6,
+                                               listnode8
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction7
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
+                                       var listnode8 = new Array[Object]
                                        var pmoduledeclnode2 = nodearraylist1
                                        assert pmoduledeclnode2 isa nullable AModuledecl
                                        var listnode3 = nodearraylist2
@@ -1134,263 +1252,262 @@ private class ReduceAction7
                                        var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        listnode6 = concat(listnode6, listnode5)
+                                       var pclassdefnode7 = nodearraylist4
+                                       assert pclassdefnode7 isa nullable AClassdef
+                                       if pclassdefnode7 != null then
+                                               listnode8.add(pclassdefnode7)
+                                       end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                pmoduledeclnode2,
                                                listnode4,
-                                               listnode6
+                                               listnode6,
+                                               listnode8
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction8
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
+                                       var listnode4 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var listnode6 = new Array[Object]
                                        var listnode5 = nodearraylist1
                                        assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode6
-                                       )
-                                       if pclassdefnode4 != null then
-                                               listnode7.add(pclassdefnode4)
+                                       var pclassdefnode6 = nodearraylist2
+                                       assert pclassdefnode6 isa nullable AClassdef
+                                       listnode7 = concat(listnode7, listnode5)
+                                       if pclassdefnode6 != null then
+                                               listnode7.add(pclassdefnode6)
                                        end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
+                                               listnode4,
                                                listnode7
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction9
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
+                                       var listnode4 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pmoduledeclnode2 = nodearraylist1
                                        assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var listnode6 = new Array[Object]
                                        var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode6
-                                       )
-                                       if pclassdefnode4 != null then
-                                               listnode7.add(pclassdefnode4)
+                                       var pclassdefnode6 = nodearraylist3
+                                       assert pclassdefnode6 isa nullable AClassdef
+                                       listnode7 = concat(listnode7, listnode5)
+                                       if pclassdefnode6 != null then
+                                               listnode7.add(pclassdefnode6)
                                        end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                pmoduledeclnode2,
                                                listnode3,
+                                               listnode4,
                                                listnode7
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction10
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
+                                       var listnode5 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        listnode4 = concat(listnode4, listnode3)
-                                       var listnode7 = new Array[Object]
                                        var listnode6 = nodearraylist2
                                        assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode7
-                                       )
-                                       if pclassdefnode5 != null then
-                                               listnode8.add(pclassdefnode5)
+                                       var pclassdefnode7 = nodearraylist3
+                                       assert pclassdefnode7 isa nullable AClassdef
+                                       listnode8 = concat(listnode8, listnode6)
+                                       if pclassdefnode7 != null then
+                                               listnode8.add(pclassdefnode7)
                                        end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
+                                               listnode5,
                                                listnode8
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction11
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
+                                       var listnode5 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var pmoduledeclnode2 = nodearraylist1
                                        assert pmoduledeclnode2 isa nullable AModuledecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
                                        listnode4 = concat(listnode4, listnode3)
-                                       var listnode7 = new Array[Object]
                                        var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode7
-                                       )
-                                       if pclassdefnode5 != null then
-                                               listnode8.add(pclassdefnode5)
+                                       var pclassdefnode7 = nodearraylist4
+                                       assert pclassdefnode7 isa nullable AClassdef
+                                       listnode8 = concat(listnode8, listnode6)
+                                       if pclassdefnode7 != null then
+                                               listnode8.add(pclassdefnode7)
                                        end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                pmoduledeclnode2,
                                                listnode4,
+                                               listnode5,
                                                listnode8
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction12
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
+                                       var listnode5 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
-                                       var listnode7 = new Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
                                        var listnode6 = nodearraylist2
                                        assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode7
-                                       )
-                                       listnode8 = concat(listnode8, listnode4)
-                                       if pclassdefnode5 != null then
-                                               listnode8.add(pclassdefnode5)
+                                       var pclassdefnode7 = nodearraylist3
+                                       assert pclassdefnode7 isa nullable AClassdef
+                                       listnode8 = concat(listnode8, listnode6)
+                                       if pclassdefnode7 != null then
+                                               listnode8.add(pclassdefnode7)
                                        end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
+                                               listnode5,
                                                listnode8
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction13
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
+                                       var listnode5 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var pmoduledeclnode2 = nodearraylist1
                                        assert pmoduledeclnode2 isa nullable AModuledecl
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       var listnode7 = new Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
                                        var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode7
-                                       )
-                                       listnode8 = concat(listnode8, listnode4)
-                                       if pclassdefnode5 != null then
-                                               listnode8.add(pclassdefnode5)
+                                       var pclassdefnode7 = nodearraylist4
+                                       assert pclassdefnode7 isa nullable AClassdef
+                                       listnode8 = concat(listnode8, listnode6)
+                                       if pclassdefnode7 != null then
+                                               listnode8.add(pclassdefnode7)
                                        end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                pmoduledeclnode2,
                                                listnode3,
+                                               listnode5,
                                                listnode8
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction14
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
+                                       var listnode6 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        listnode4 = concat(listnode4, listnode3)
                                        var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
-                                       var listnode8 = new Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
                                        var listnode7 = nodearraylist3
                                        assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode8
-                                       )
-                                       listnode9 = concat(listnode9, listnode5)
-                                       if pclassdefnode6 != null then
-                                               listnode9.add(pclassdefnode6)
+                                       var pclassdefnode8 = nodearraylist4
+                                       assert pclassdefnode8 isa nullable AClassdef
+                                       listnode9 = concat(listnode9, listnode7)
+                                       if pclassdefnode8 != null then
+                                               listnode9.add(pclassdefnode8)
                                        end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
+                                               listnode6,
                                                listnode9
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction15
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
+                                       var listnode6 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var pmoduledeclnode2 = nodearraylist1
                                        assert pmoduledeclnode2 isa nullable AModuledecl
@@ -1399,137 +1516,130 @@ private class ReduceAction15
                                        listnode4 = concat(listnode4, listnode3)
                                        var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
-                                       var listnode8 = new Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
                                        var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode8
-                                       )
-                                       listnode9 = concat(listnode9, listnode5)
-                                       if pclassdefnode6 != null then
-                                               listnode9.add(pclassdefnode6)
+                                       var pclassdefnode8 = nodearraylist5
+                                       assert pclassdefnode8 isa nullable AClassdef
+                                       listnode9 = concat(listnode9, listnode7)
+                                       if pclassdefnode8 != null then
+                                               listnode9.add(pclassdefnode8)
                                        end
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                pmoduledeclnode2,
                                                listnode4,
+                                               listnode6,
                                                listnode9
                                        )
                                        node_list = pmodulenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction16
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode5 = new Array[Object]
-                                       var pclassdefnode4 = nodearraylist1
-                                       assert pclassdefnode4 isa nullable AClassdef
-                                       if pclassdefnode4 != null then
-                                               listnode5.add(pclassdefnode4)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               null,
-                                               listnode3,
-                                               listnode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmodulenode5 = nodearraylist4
+                                       assert tkwmodulenode5 isa nullable TKwmodule
+                                       var pmodulenamenode6 = nodearraylist6
+                                       assert pmodulenamenode6 isa nullable AModuleName
+                                       var pannotationsnode7 = nodearraylist7
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmodulenode5,
+                                               pmodulenamenode6,
+                                               pannotationsnode7
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction17
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode5 = new Array[Object]
-                                       var pmoduledeclnode2 = nodearraylist1
-                                       assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var pclassdefnode4 = nodearraylist2
-                                       assert pclassdefnode4 isa nullable AClassdef
-                                       if pclassdefnode4 != null then
-                                               listnode5.add(pclassdefnode4)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               pmoduledeclnode2,
-                                               listnode3,
-                                               listnode5
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pvisibilitynode2 = nodearraylist3
+                                       assert pvisibilitynode2 isa nullable AVisibility
+                                       var tkwimportnode3 = nodearraylist4
+                                       assert tkwimportnode3 isa nullable TKwimport
+                                       var pmodulenamenode4 = nodearraylist6
+                                       assert pmodulenamenode4 isa nullable AModuleName
+                                       var pannotationsnode5 = nodearraylist7
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode3,
+                                               pmodulenamenode4,
+                                               pannotationsnode5
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction18
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var listnode3 = nodearraylist1
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa nullable AClassdef
-                                       if pclassdefnode5 != null then
-                                               listnode6.add(pclassdefnode5)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               null,
-                                               listnode4,
-                                               listnode6
+                                       var pvisibilitynode2 = nodearraylist3
+                                       assert pvisibilitynode2 isa nullable AVisibility
+                                       var tkwimportnode3 = nodearraylist4
+                                       assert tkwimportnode3 isa nullable TKwimport
+                                       var tkwendnode4 = nodearraylist6
+                                       assert tkwendnode4 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode3,
+                                               tkwendnode4
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction19
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var pmoduledeclnode2 = nodearraylist1
-                                       assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa nullable AClassdef
-                                       if pclassdefnode5 != null then
-                                               listnode6.add(pclassdefnode5)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               pmoduledeclnode2,
-                                               listnode4,
-                                               listnode6
-                                       )
-                                       node_list = pmodulenode1
+                                       var pclassdefnode1 = nodearraylist1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction20
        super ReduceAction
@@ -1539,123 +1649,55 @@ private class ReduceAction20
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var listnode4 = nodearraylist1
-                                       assert listnode4 isa Array[Object]
-                                       var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa nullable AClassdef
-                                       listnode6 = concat(listnode6, listnode4)
-                                       if pclassdefnode5 != null then
-                                               listnode6.add(pclassdefnode5)
+                                       var ppropdefnode2 = nodearraylist1
+                                       assert ppropdefnode2 isa nullable APropdef
+                                       if ppropdefnode2 != null then
+                                               listnode3.add(ppropdefnode2)
                                        end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               null,
-                                               listnode3,
-                                               listnode6
+                                       var pclassdefnode1: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
+                                               listnode3
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction21
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var pmoduledeclnode2 = nodearraylist1
-                                       assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa nullable AClassdef
-                                       listnode6 = concat(listnode6, listnode4)
-                                       if pclassdefnode5 != null then
-                                               listnode6.add(pclassdefnode5)
+                                       var ppropdefnode2 = nodearraylist1
+                                       assert ppropdefnode2 isa nullable APropdef
+                                       if ppropdefnode2 != null then
+                                               listnode3.add(ppropdefnode2)
                                        end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               pmoduledeclnode2,
-                                               listnode3,
-                                               listnode6
+                                       var pclassdefnode1: nullable AMainClassdef = new AMainClassdef.init_amainclassdef(
+                                               listnode3
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction22
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var listnode3 = nodearraylist1
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var listnode5 = nodearraylist2
-                                       assert listnode5 isa Array[Object]
-                                       var pclassdefnode6 = nodearraylist3
-                                       assert pclassdefnode6 isa nullable AClassdef
-                                       listnode7 = concat(listnode7, listnode5)
-                                       if pclassdefnode6 != null then
-                                               listnode7.add(pclassdefnode6)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               null,
-                                               listnode4,
-                                               listnode7
-                                       )
-                                       node_list = pmodulenode1
+                                       node_list = null
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction23
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var pmoduledeclnode2 = nodearraylist1
-                                       assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var listnode5 = nodearraylist3
-                                       assert listnode5 isa Array[Object]
-                                       var pclassdefnode6 = nodearraylist4
-                                       assert pclassdefnode6 isa nullable AClassdef
-                                       listnode7 = concat(listnode7, listnode5)
-                                       if pclassdefnode6 != null then
-                                               listnode7.add(pclassdefnode6)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               pmoduledeclnode2,
-                                               listnode4,
-                                               listnode7
-                                       )
-                                       node_list = pmodulenode1
+                                       node_list = null
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction24
        super ReduceAction
@@ -1664,379 +1706,231 @@ private class ReduceAction24
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode6
-                                       )
-                                       var pclassdefnode7 = nodearraylist2
-                                       assert pclassdefnode7 isa nullable AClassdef
-                                       if pclassdefnode4 != null then
-                                               listnode8.add(pclassdefnode4)
-                                       end
-                                       if pclassdefnode7 != null then
-                                               listnode8.add(pclassdefnode7)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
-                                               listnode3,
-                                               listnode8
+                                               pexprnode3
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction25
+private class ReduceAction26
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
-                                       var pmoduledeclnode2 = nodearraylist1
-                                       assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist2
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode6
-                                       )
-                                       var pclassdefnode7 = nodearraylist3
-                                       assert pclassdefnode7 isa nullable AClassdef
-                                       if pclassdefnode4 != null then
-                                               listnode8.add(pclassdefnode4)
-                                       end
-                                       if pclassdefnode7 != null then
-                                               listnode8.add(pclassdefnode7)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               pmoduledeclnode2,
-                                               listnode3,
-                                               listnode8
+                                       var listnode11 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode10 = nodearraylist8
+                                       assert listnode10 isa Array[Object]
+                                       listnode11 = concat(listnode11, listnode10)
+                                       var tkwendnode12 = nodearraylist9
+                                       assert tkwendnode12 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               null,
+                                               listnode11,
+                                               tkwendnode12
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction26
+private class ReduceAction27
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode3 = nodearraylist1
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist2
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode7
-                                       )
-                                       var pclassdefnode8 = nodearraylist3
-                                       assert pclassdefnode8 isa nullable AClassdef
-                                       if pclassdefnode5 != null then
-                                               listnode9.add(pclassdefnode5)
-                                       end
-                                       if pclassdefnode8 != null then
-                                               listnode9.add(pclassdefnode8)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               null,
-                                               listnode4,
-                                               listnode9
+                                       var listnode8 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pexterncodeblocknode9 = nodearraylist8
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+                                       var listnode10 = nodearraylist9
+                                       assert listnode10 isa Array[Object]
+                                       listnode11 = concat(listnode11, listnode10)
+                                       var tkwendnode12 = nodearraylist10
+                                       assert tkwendnode12 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pexterncodeblocknode9,
+                                               listnode11,
+                                               tkwendnode12
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction27
+private class ReduceAction29
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var pmoduledeclnode2 = nodearraylist1
-                                       assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist3
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode7
-                                       )
-                                       var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa nullable AClassdef
-                                       if pclassdefnode5 != null then
-                                               listnode9.add(pclassdefnode5)
-                                       end
-                                       if pclassdefnode8 != null then
-                                               listnode9.add(pclassdefnode8)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               pmoduledeclnode2,
-                                               listnode4,
-                                               listnode9
-                                       )
-                                       node_list = pmodulenode1
+                                       var tkwredefnode1 = nodearraylist1
+                                       node_list = tkwredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction28
+private class ReduceAction30
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode4 = nodearraylist1
-                                       assert listnode4 isa Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist2
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode7
-                                       )
-                                       var pclassdefnode8 = nodearraylist3
-                                       assert pclassdefnode8 isa nullable AClassdef
-                                       listnode9 = concat(listnode9, listnode4)
-                                       if pclassdefnode5 != null then
-                                               listnode9.add(pclassdefnode5)
-                                       end
-                                       if pclassdefnode8 != null then
-                                               listnode9.add(pclassdefnode8)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               null,
-                                               listnode3,
-                                               listnode9
+                                       var tkwclassnode2 = nodearraylist1
+                                       assert tkwclassnode2 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
+                                               tkwclassnode2
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction29
+private class ReduceAction31
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var pmoduledeclnode2 = nodearraylist1
-                                       assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist3
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode7
-                                       )
-                                       var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa nullable AClassdef
-                                       listnode9 = concat(listnode9, listnode4)
-                                       if pclassdefnode5 != null then
-                                               listnode9.add(pclassdefnode5)
-                                       end
-                                       if pclassdefnode8 != null then
-                                               listnode9.add(pclassdefnode8)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               pmoduledeclnode2,
-                                               listnode3,
-                                               listnode9
+                                       var tkwabstractnode2 = nodearraylist1
+                                       assert tkwabstractnode2 isa nullable TKwabstract
+                                       var tkwclassnode3 = nodearraylist2
+                                       assert tkwclassnode3 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
+                                               tkwabstractnode2,
+                                               tkwclassnode3
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction30
+private class ReduceAction32
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var listnode5 = nodearraylist2
-                                       assert listnode5 isa Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var listnode7 = nodearraylist3
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode8
-                                       )
-                                       var pclassdefnode9 = nodearraylist4
-                                       assert pclassdefnode9 isa nullable AClassdef
-                                       listnode10 = concat(listnode10, listnode5)
-                                       if pclassdefnode6 != null then
-                                               listnode10.add(pclassdefnode6)
-                                       end
-                                       if pclassdefnode9 != null then
-                                               listnode10.add(pclassdefnode9)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               null,
-                                               listnode4,
-                                               listnode10
+                                       var tkwinterfacenode2 = nodearraylist1
+                                       assert tkwinterfacenode2 isa nullable TKwinterface
+                                       var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
+                                               tkwinterfacenode2
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction31
+private class ReduceAction33
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var pmoduledeclnode2 = nodearraylist1
-                                       assert pmoduledeclnode2 isa nullable AModuledecl
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var listnode5 = nodearraylist3
-                                       assert listnode5 isa Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var listnode7 = nodearraylist4
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode8
-                                       )
-                                       var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa nullable AClassdef
-                                       listnode10 = concat(listnode10, listnode5)
-                                       if pclassdefnode6 != null then
-                                               listnode10.add(pclassdefnode6)
-                                       end
-                                       if pclassdefnode9 != null then
-                                               listnode10.add(pclassdefnode9)
-                                       end
-                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
-                                               pmoduledeclnode2,
-                                               listnode4,
-                                               listnode10
+                                       var tkwenumnode2 = nodearraylist1
+                                       assert tkwenumnode2 isa nullable TKwenum
+                                       var pclasskindnode1: nullable AEnumClasskind = new AEnumClasskind.init_aenumclasskind(
+                                               tkwenumnode2
                                        )
-                                       node_list = pmodulenode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction32
+private class ReduceAction34
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwmodulenode3 = nodearraylist2
-                                       assert tkwmodulenode3 isa nullable TKwmodule
-                                       var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa nullable TId
-                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
-                                               pdocnode2,
-                                               tkwmodulenode3,
-                                               tidnode4
+                                       var tkwexternnode2 = nodearraylist1
+                                       assert tkwexternnode2 isa nullable TKwextern
+                                       var tkwclassnode3 = nodearraylist2
+                                       assert tkwclassnode3 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
+                                               tkwexternnode2,
+                                               tkwclassnode3
                                        )
-                                       node_list = pmoduledeclnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction33
+private class ReduceAction35
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa nullable AVisibility
-                                       var tkwimportnode3 = nodearraylist3
-                                       assert tkwimportnode3 isa nullable TKwimport
-                                       var tidnode4 = nodearraylist5
-                                       assert tidnode4 isa nullable TId
-                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
-                                               pvisibilitynode2,
-                                               tkwimportnode3,
-                                               tidnode4
-                                       )
-                                       node_list = pimportnode1
+                                       var listnode2 = new Array[Object]
+                                       var pformaldefnode1 = nodearraylist3
+                                       if pformaldefnode1 != null then
+                                               listnode2.add(pformaldefnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction34
+private class ReduceAction36
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -2047,76 +1941,85 @@ private class ReduceAction34
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa nullable AVisibility
-                                       var tkwimportnode3 = nodearraylist3
-                                       assert tkwimportnode3 isa nullable TKwimport
-                                       var tkwendnode4 = nodearraylist5
-                                       assert tkwendnode4 isa nullable TKwend
-                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
-                                               pvisibilitynode2,
-                                               tkwimportnode3,
-                                               tkwendnode4
-                                       )
-                                       node_list = pimportnode1
+                                       var listnode3 = new Array[Object]
+                                       var pformaldefnode1 = nodearraylist3
+                                       var listnode2 = nodearraylist4
+                                       assert listnode2 isa Array[Object]
+                                       if pformaldefnode1 != null then
+                                               listnode3.add(pformaldefnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction35
+private class ReduceAction37
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var ppropdefnode2 = nodearraylist1
-                                       assert ppropdefnode2 isa nullable APropdef
-                                       if ppropdefnode2 != null then
-                                               listnode3.add(ppropdefnode2)
-                                       end
-                                       var pclassdefnode1: nullable AMainClassdef = new AMainClassdef.init_amainclassdef(
-                                               listnode3
-                                       )
-                                       node_list = pclassdefnode1
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction36
+private class ReduceAction38
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pformaldefnode1 = nodearraylist3
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction37
+private class ReduceAction39
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
-                                               null,
-                                               pexprnode3
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+                                               tclassidnode2,
+                                               ptypenode3,
+                                               null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction39
+private class ReduceAction40
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pannotationsnode4 = nodearraylist2
+                                       assert pannotationsnode4 isa nullable AAnnotations
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+                                               tclassidnode2,
+                                               ptypenode3,
+                                               pannotationsnode4
+                                       )
+                                       node_list = pformaldefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction41
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -2128,38 +2031,89 @@ private class ReduceAction39
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwsupernode5 = nodearraylist4
+                                       assert tkwsupernode5 isa nullable TKwsuper
+                                       var ptypenode6 = nodearraylist6
+                                       assert ptypenode6 isa nullable AType
+                                       var pannotationsnode7 = nodearraylist7
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode7,
-                                               listnode8,
-                                               listnode9
+                                               tkwsupernode5,
+                                               ptypenode6,
+                                               pannotationsnode7
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction40
+private class ReduceAction42
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       listnode2 = concat(listnode2, listnode1)
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction43
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var ppropdefnode1 = nodearraylist1
+                                       if ppropdefnode1 != null then
+                                               listnode2.add(ppropdefnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction44
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction45
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ppropdefnode1 = nodearraylist1
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction46
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2168,40 +2122,45 @@ private class ReduceAction40
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode7,
-                                               listnode8,
-                                               listnode9
+                                               tkwmethnode5,
+                                               null,
+                                               null,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction41
+private class ReduceAction47
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2210,43 +2169,45 @@ private class ReduceAction41
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode7 = nodearraylist6
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist7
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode8,
-                                               listnode9,
-                                               listnode10
+                                               tkwmethnode5,
+                                               null,
+                                               null,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction42
+private class ReduceAction48
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -2254,88 +2215,84 @@ private class ReduceAction42
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode7 = nodearraylist7
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist7
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode8,
-                                               listnode9,
-                                               listnode10
+                                               tkwmethnode5,
+                                               null,
+                                               null,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               null,
+                                               null,
+                                               null
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction43
+private class ReduceAction49
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode8 = nodearraylist6
-                                       assert listnode8 isa Array[Object]
-                                       listnode9 = concat(listnode9, listnode8)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var psignaturenode9 = nodearraylist5
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist6
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode7,
-                                               listnode9,
-                                               listnode10
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               null,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               null,
+                                               null,
+                                               null
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction44
+private class ReduceAction50
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -2343,44 +2300,43 @@ private class ReduceAction44
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode8 = nodearraylist7
-                                       assert listnode8 isa Array[Object]
-                                       listnode9 = concat(listnode9, listnode8)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist7
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode7,
-                                               listnode9,
-                                               listnode10
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               null,
+                                               null,
+                                               null
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction45
+private class ReduceAction51
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2389,45 +2345,41 @@ private class ReduceAction45
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode7 = nodearraylist6
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var listnode9 = nodearraylist7
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var psignaturenode9 = nodearraylist5
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pexprnode13 = nodearraylist7
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode8,
-                                               listnode10,
-                                               listnode11
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               null,
+                                               psignaturenode9,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction46
+private class ReduceAction52
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -2437,46 +2389,44 @@ private class ReduceAction46
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode7 = nodearraylist7
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var listnode9 = nodearraylist8
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode8,
-                                               listnode10,
-                                               listnode11
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction47
+private class ReduceAction53
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2485,41 +2435,44 @@ private class ReduceAction47
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode9 = nodearraylist6
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var psignaturenode9 = nodearraylist5
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist6
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode7,
-                                               listnode8,
-                                               listnode10
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               null,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction48
+private class ReduceAction54
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -2529,44 +2482,45 @@ private class ReduceAction48
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode9 = nodearraylist7
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist7
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode7,
-                                               listnode8,
-                                               listnode10
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction49
+private class ReduceAction55
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2575,45 +2529,45 @@ private class ReduceAction49
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode7 = nodearraylist6
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var listnode10 = nodearraylist7
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pexterncallsnode11 = nodearraylist7
+                                       assert pexterncallsnode11 isa nullable AExternCalls
+                                       var pexterncodeblocknode12 = nodearraylist8
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode8,
-                                               listnode9,
-                                               listnode11
+                                               tkwmethnode5,
+                                               null,
+                                               null,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               null,
+                                               pexterncallsnode11,
+                                               pexterncodeblocknode12,
+                                               null
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction50
+private class ReduceAction56
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -2623,48 +2577,47 @@ private class ReduceAction50
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode7 = nodearraylist7
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var listnode10 = nodearraylist8
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist7
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pexterncallsnode11 = nodearraylist8
+                                       assert pexterncallsnode11 isa nullable AExternCalls
+                                       var pexterncodeblocknode12 = nodearraylist9
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode8,
-                                               listnode9,
-                                               listnode11
+                                               tkwmethnode5,
+                                               null,
+                                               null,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               pexterncallsnode11,
+                                               pexterncodeblocknode12,
+                                               null
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction51
+private class ReduceAction57
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -2672,40 +2625,36 @@ private class ReduceAction51
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode8 = nodearraylist6
-                                       assert listnode8 isa Array[Object]
-                                       listnode9 = concat(listnode9, listnode8)
-                                       var listnode10 = nodearraylist7
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwvarnode5 = nodearraylist4
+                                       assert tkwvarnode5 isa nullable TKwvar
+                                       var tidnode6 = nodearraylist5
+                                       assert tidnode6 isa nullable TId
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist7
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode7,
-                                               listnode9,
-                                               listnode11
+                                               tkwvarnode5,
+                                               tidnode6,
+                                               ptypenode7,
+                                               null,
+                                               pannotationsnode9,
+                                               null
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction52
+private class ReduceAction58
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -2720,48 +2669,42 @@ private class ReduceAction52
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode8 = nodearraylist7
-                                       assert listnode8 isa Array[Object]
-                                       listnode9 = concat(listnode9, listnode8)
-                                       var listnode10 = nodearraylist8
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwvarnode5 = nodearraylist4
+                                       assert tkwvarnode5 isa nullable TKwvar
+                                       var tidnode6 = nodearraylist5
+                                       assert tidnode6 isa nullable TId
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pexprnode8 = nodearraylist9
+                                       assert pexprnode8 isa nullable AExpr
+                                       var pannotationsnode9 = nodearraylist10
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode7,
-                                               listnode9,
-                                               listnode11
+                                               tkwvarnode5,
+                                               tidnode6,
+                                               ptypenode7,
+                                               pexprnode8,
+                                               pannotationsnode9,
+                                               null
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction53
+private class ReduceAction59
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2770,49 +2713,40 @@ private class ReduceAction53
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode7 = nodearraylist6
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var listnode9 = nodearraylist7
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var listnode11 = nodearraylist8
-                                       assert listnode11 isa Array[Object]
-                                       listnode12 = concat(listnode12, listnode11)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwvarnode5 = nodearraylist4
+                                       assert tkwvarnode5 isa nullable TKwvar
+                                       var tidnode6 = nodearraylist5
+                                       assert tidnode6 isa nullable TId
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode8,
-                                               listnode10,
-                                               listnode12
+                                               tkwvarnode5,
+                                               tidnode6,
+                                               ptypenode7,
+                                               null,
+                                               null,
+                                               pexprnode10
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction54
+private class ReduceAction60
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -2822,283 +2756,88 @@ private class ReduceAction54
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var listnode7 = nodearraylist7
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var listnode9 = nodearraylist8
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var listnode11 = nodearraylist9
-                                       assert listnode11 isa Array[Object]
-                                       listnode12 = concat(listnode12, listnode11)
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwvarnode5 = nodearraylist4
+                                       assert tkwvarnode5 isa nullable TKwvar
+                                       var tidnode6 = nodearraylist5
+                                       assert tidnode6 isa nullable TId
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist7
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var pexprnode10 = nodearraylist9
+                                       assert pexprnode10 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               tclassidnode6,
-                                               listnode8,
-                                               listnode10,
-                                               listnode12
+                                               tkwvarnode5,
+                                               tidnode6,
+                                               ptypenode7,
+                                               null,
+                                               pannotationsnode9,
+                                               pexprnode10
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction55
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwclassnode2 = nodearraylist1
-                                       assert tkwclassnode2 isa nullable TKwclass
-                                       var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
-                                               tkwclassnode2
-                                       )
-                                       node_list = pclasskindnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction56
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwabstractnode2 = nodearraylist1
-                                       assert tkwabstractnode2 isa nullable TKwabstract
-                                       var tkwclassnode3 = nodearraylist2
-                                       assert tkwclassnode3 isa nullable TKwclass
-                                       var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
-                                               tkwabstractnode2,
-                                               tkwclassnode3
-                                       )
-                                       node_list = pclasskindnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction57
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwinterfacenode2 = nodearraylist1
-                                       assert tkwinterfacenode2 isa nullable TKwinterface
-                                       var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
-                                               tkwinterfacenode2
-                                       )
-                                       node_list = pclasskindnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction58
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwenumnode2 = nodearraylist1
-                                       assert tkwenumnode2 isa nullable TKwenum
-                                       var pclasskindnode1: nullable AEnumClasskind = new AEnumClasskind.init_aenumclasskind(
-                                               tkwenumnode2
-                                       )
-                                       node_list = pclasskindnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction59
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pformaldefnode1 = nodearraylist3
-                                       if pformaldefnode1 != null then
-                                               listnode2.add(pformaldefnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction60
+private class ReduceAction61
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pformaldefnode1 = nodearraylist3
-                                       var listnode2 = nodearraylist4
-                                       assert listnode2 isa Array[Object]
-                                       if pformaldefnode1 != null then
-                                               listnode3.add(pformaldefnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction61
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var pformaldefnode1 = nodearraylist3
-                                       node_list = pformaldefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction62
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa nullable TClassid
-                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
-                                               tclassidnode2,
-                                               null
-                                       )
-                                       node_list = pformaldefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction63
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa nullable TClassid
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
-                                               tclassidnode2,
-                                               ptypenode3
-                                       )
-                                       node_list = pformaldefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction64
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwspecialnode2 = nodearraylist2
-                                       assert tkwspecialnode2 isa nullable TKwspecial
-                                       var ptypenode4 = nodearraylist4
-                                       assert ptypenode4 isa nullable AType
-                                       var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
-                                               tkwspecialnode2,
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwvarnode5 = nodearraylist4
+                                       assert tkwvarnode5 isa nullable TKwvar
+                                       var tidnode6 = nodearraylist5
+                                       assert tidnode6 isa nullable TId
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode5,
+                                               tidnode6,
+                                               ptypenode7,
                                                null,
-                                               ptypenode4
-                                       )
-                                       node_list = psuperclassnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction65
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var ptypenode4 = nodearraylist4
-                                       assert ptypenode4 isa nullable AType
-                                       var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
                                                null,
-                                               tkwsupernode3,
-                                               ptypenode4
+                                               pexprnode10
                                        )
-                                       node_list = psuperclassnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction66
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var ppropdefnode1 = nodearraylist1
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction67
+private class ReduceAction62
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3108,32 +2847,36 @@ private class ReduceAction67
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var tkwvarnode5 = nodearraylist4
+                                       assert tkwvarnode5 isa nullable TKwvar
+                                       var tidnode6 = nodearraylist5
+                                       assert tidnode6 isa nullable TId
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist7
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var pexprnode10 = nodearraylist9
+                                       assert pexprnode10 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               tkwvarnode5,
+                                               tidnode6,
+                                               ptypenode7,
+                                               null,
+                                               pannotationsnode9,
+                                               pexprnode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction68
+private class ReduceAction63
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3152,34 +2895,36 @@ private class ReduceAction68
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var tkwinitnode6 = nodearraylist4
+                                       assert tkwinitnode6 isa nullable TKwinit
+                                       var psignaturenode9 = nodearraylist5
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pexprnode13 = nodearraylist7
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               null,
+                                               tkwinitnode6,
+                                               null,
+                                               null,
+                                               psignaturenode9,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction69
+private class ReduceAction64
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3190,32 +2935,37 @@ private class ReduceAction69
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var tkwinitnode6 = nodearraylist4
+                                       assert tkwinitnode6 isa nullable TKwinit
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               null,
+                                               tkwinitnode6,
+                                               null,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction70
+private class ReduceAction65
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3235,74 +2985,38 @@ private class ReduceAction70
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var tkwinitnode6 = nodearraylist4
+                                       assert tkwinitnode6 isa nullable TKwinit
+                                       var psignaturenode9 = nodearraylist5
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist6
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction71
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               tkwinitnode6,
+                                               null,
+                                               null,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction72
+private class ReduceAction66
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3318,71 +3032,39 @@ private class ReduceAction72
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist9
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var tkwinitnode6 = nodearraylist4
+                                       assert tkwinitnode6 isa nullable TKwinit
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist7
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction73
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
-                                               pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwinitnode6,
+                                               null,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               null,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction74
+private class ReduceAction67
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3396,27 +3078,28 @@ private class ReduceAction74
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       var tkwtypenode5 = nodearraylist4
+                                       assert tkwtypenode5 isa nullable TKwtype
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7,
+                                               pannotationsnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction75
+private class ReduceAction68
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3430,29 +3113,37 @@ private class ReduceAction75
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var psignaturenode9 = nodearraylist5
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pexterncallsnode11 = nodearraylist6
+                                       assert pexterncallsnode11 isa nullable AExternCalls
+                                       var pexterncodeblocknode12 = nodearraylist7
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               null,
+                                               psignaturenode9,
+                                               null,
+                                               pexterncallsnode11,
+                                               pexterncodeblocknode12,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction76
+private class ReduceAction69
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3471,31 +3162,40 @@ private class ReduceAction76
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pexterncallsnode11 = nodearraylist7
+                                       assert pexterncallsnode11 isa nullable AExternCalls
+                                       var pexterncodeblocknode12 = nodearraylist8
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               null,
+                                               pexterncallsnode11,
+                                               pexterncodeblocknode12,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction77
+private class ReduceAction70
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3505,34 +3205,44 @@ private class ReduceAction77
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var psignaturenode9 = nodearraylist5
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist6
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pexterncallsnode11 = nodearraylist7
+                                       assert pexterncallsnode11 isa nullable AExternCalls
+                                       var pexterncodeblocknode12 = nodearraylist8
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
-                                               null,
+                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               null,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               pexterncallsnode11,
+                                               pexterncodeblocknode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction78
+private class ReduceAction71
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3547,111 +3257,60 @@ private class ReduceAction78
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var tkwnewnode7 = nodearraylist4
+                                       assert tkwnewnode7 isa nullable TKwnew
+                                       var pmethidnode8 = nodearraylist5
+                                       assert pmethidnode8 isa nullable AMethid
+                                       var psignaturenode9 = nodearraylist6
+                                       assert psignaturenode9 isa nullable ASignature
+                                       var pannotationsnode10 = nodearraylist7
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pexterncallsnode11 = nodearraylist8
+                                       assert pexterncallsnode11 isa nullable AExternCalls
+                                       var pexterncodeblocknode12 = nodearraylist9
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               tkwnewnode7,
+                                               pmethidnode8,
+                                               psignaturenode9,
+                                               pannotationsnode10,
+                                               pexterncallsnode11,
+                                               pexterncodeblocknode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction79
+private class ReduceAction72
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8
-                                       )
+                                       var ppropdefnode1 = nodearraylist1
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction80
+private class ReduceAction74
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8
-                                       )
-                                       node_list = ppropdefnode1
+                                       var pannotationsnode1 = nodearraylist2
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction81
+private class ReduceAction75
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3660,1919 +3319,806 @@ private class ReduceAction81
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
+                                       var pannotationsnode1 = nodearraylist3
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction82
+private class ReduceAction78
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
+                                       var pannotationsnode1 = nodearraylist3
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction83
+private class ReduceAction79
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
+                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pvisibilitynode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction84
+private class ReduceAction80
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
+                                       var tkwpublicnode2 = nodearraylist1
+                                       assert tkwpublicnode2 isa nullable TKwpublic
+                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pvisibilitynode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction85
+private class ReduceAction81
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
+                                       var tkwprivatenode2 = nodearraylist1
+                                       assert tkwprivatenode2 isa nullable TKwprivate
+                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pvisibilitynode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction86
+private class ReduceAction82
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
+                                       var tkwprotectednode2 = nodearraylist1
+                                       assert tkwprotectednode2 isa nullable TKwprotected
+                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pvisibilitynode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction87
+private class ReduceAction83
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
+                                       var tkwintrudenode2 = nodearraylist1
+                                       assert tkwintrudenode2 isa nullable TKwintrude
+                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pvisibilitynode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction88
+private class ReduceAction84
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist4
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist5
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist6
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist7
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
+                                       var tplusnode2 = nodearraylist1
+                                       assert tplusnode2 isa nullable TPlus
+                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
+                                               tplusnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction89
+private class ReduceAction85
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa nullable TMinus
+                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
+                                               tminusnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction90
+private class ReduceAction86
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var tstarnode2 = nodearraylist1
+                                       assert tstarnode2 isa nullable TStar
+                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
+                                               tstarnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction91
+private class ReduceAction87
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var tstarstarnode2 = nodearraylist1
+                                       assert tstarstarnode2 isa nullable TStarstar
+                                       var pmethidnode1: nullable AStarstarMethid = new AStarstarMethid.init_astarstarmethid(
+                                               tstarstarnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction92
+private class ReduceAction88
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var tslashnode2 = nodearraylist1
+                                       assert tslashnode2 isa nullable TSlash
+                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
+                                               tslashnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction93
+private class ReduceAction89
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var tpercentnode2 = nodearraylist1
+                                       assert tpercentnode2 isa nullable TPercent
+                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
+                                               tpercentnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction94
+private class ReduceAction90
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var teqnode2 = nodearraylist1
+                                       assert teqnode2 isa nullable TEq
+                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
+                                               teqnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction95
+private class ReduceAction91
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var tnenode2 = nodearraylist1
+                                       assert tnenode2 isa nullable TNe
+                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
+                                               tnenode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction96
+private class ReduceAction92
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist4
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist5
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist6
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist7
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist8
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var tlenode2 = nodearraylist1
+                                       assert tlenode2 isa nullable TLe
+                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
+                                               tlenode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction97
+private class ReduceAction93
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                       var tgenode2 = nodearraylist1
+                                       assert tgenode2 isa nullable TGe
+                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
+                                               tgenode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction98
+private class ReduceAction94
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                       var tltnode2 = nodearraylist1
+                                       assert tltnode2 isa nullable TLt
+                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
+                                               tltnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction99
+private class ReduceAction95
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                       var tgtnode2 = nodearraylist1
+                                       assert tgtnode2 isa nullable TGt
+                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
+                                               tgtnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction100
+private class ReduceAction96
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                       var tllnode2 = nodearraylist1
+                                       assert tllnode2 isa nullable TLl
+                                       var pmethidnode1: nullable ALlMethid = new ALlMethid.init_allmethid(
+                                               tllnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction101
+private class ReduceAction97
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                       var tggnode2 = nodearraylist1
+                                       assert tggnode2 isa nullable TGg
+                                       var pmethidnode1: nullable AGgMethid = new AGgMethid.init_aggmethid(
+                                               tggnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction102
+private class ReduceAction98
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var tcbranode3 = nodearraylist2
+                                       assert tcbranode3 isa nullable TCbra
+                                       var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
+                                               tobranode2,
+                                               tcbranode3
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction103
+private class ReduceAction99
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                       var tstarshipnode2 = nodearraylist1
+                                       assert tstarshipnode2 isa nullable TStarship
+                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
+                                               tstarshipnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction104
+private class ReduceAction100
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist4
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist5
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist6
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist7
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var tassignnode3 = nodearraylist2
+                                       assert tassignnode3 isa nullable TAssign
+                                       var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
+                                               tidnode2,
+                                               tassignnode3
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction105
+private class ReduceAction101
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var tcbranode3 = nodearraylist2
+                                       assert tcbranode3 isa nullable TCbra
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
+                                               tobranode2,
+                                               tcbranode3,
+                                               tassignnode4
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction106
+private class ReduceAction102
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
+                                               tidnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pmethidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction107
+private class ReduceAction103
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var listnode4 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var ptypenode6 = nodearraylist5
+                                       assert ptypenode6 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               ptypenode6
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = psignaturenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction108
+private class ReduceAction104
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var listnode4 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = psignaturenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction109
+private class ReduceAction105
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
+                                       var listnode3 = new Array[Object]
+                                       var ptypenode5 = nodearraylist1
+                                       assert ptypenode5 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
+                                               listnode3,
                                                null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               ptypenode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = psignaturenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction110
+private class ReduceAction106
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
+                                       var listnode3 = new Array[Object]
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
+                                               listnode3,
                                                null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = psignaturenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction111
+private class ReduceAction107
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
+                                       var listnode2 = new Array[Object]
+                                       var pparamnode1 = nodearraylist1
+                                       if pparamnode1 != null then
+                                               listnode2.add(pparamnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction112
+private class ReduceAction108
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist4
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist5
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist6
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist7
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist8
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist11
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
+                                       var listnode3 = new Array[Object]
+                                       var pparamnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pparamnode1 != null then
+                                               listnode3.add(pparamnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction113
+private class ReduceAction110
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
+                                       var pparamnode1 = nodearraylist3
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction114
+private class ReduceAction111
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
                                                null,
-                                               tidnode9,
                                                null,
-                                               null
+                                               pannotationsnode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction115
+private class ReduceAction112
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
                                                null,
-                                               tidnode9,
-                                               ptypenode10,
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction116
+private class ReduceAction113
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
                                                null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               null
+                                               pannotationsnode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction117
+private class ReduceAction114
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist5
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var tdotdotdotnode4 = nodearraylist3
+                                       assert tdotdotdotnode4 isa nullable TDotdotdot
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               tdotdotdotnode4,
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction118
+private class ReduceAction115
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist6
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
-                                               null
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tdotdotdotnode4 = nodearraylist4
+                                       assert tdotdotdotnode4 isa nullable TDotdotdot
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               tdotdotdotnode4,
+                                               pannotationsnode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction119
+private class ReduceAction116
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist6
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               null
+                                       var listnode4 = new Array[Object]
+                                       var tkwimportnode2 = nodearraylist1
+                                       assert tkwimportnode2 isa nullable TKwimport
+                                       var pexterncallnode3 = nodearraylist3
+                                       assert pexterncallnode3 isa nullable AExternCall
+                                       if pexterncallnode3 != null then
+                                               listnode4.add(pexterncallnode3)
+                                       end
+                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
+                                               tkwimportnode2,
+                                               listnode4
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction120
+private class ReduceAction117
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist7
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               null
+                                       var listnode5 = new Array[Object]
+                                       var tkwimportnode2 = nodearraylist1
+                                       assert tkwimportnode2 isa nullable TKwimport
+                                       var pexterncallnode3 = nodearraylist3
+                                       assert pexterncallnode3 isa nullable AExternCall
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       if pexterncallnode3 != null then
+                                               listnode5.add(pexterncallnode3)
+                                       end
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
+                                               tkwimportnode2,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction121
+private class ReduceAction119
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
+                                       var pexterncallnode1 = nodearraylist3
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction122
+private class ReduceAction120
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
-                                               pexprnode11
+                                       var pexterncallnode1 = nodearraylist1
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction122
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwsupernode2 = nodearraylist1
+                                       assert tkwsupernode2 isa nullable TKwsuper
+                                       var pexterncallnode1: nullable ASuperExternCall = new ASuperExternCall.init_asuperexterncall(
+                                               tkwsupernode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction123
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var pmethidnode2 = nodearraylist1
+                                       assert pmethidnode2 isa nullable AMethid
+                                       var pexterncallnode1: nullable ALocalPropExternCall = new ALocalPropExternCall.init_alocalpropexterncall(
+                                               pmethidnode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction124
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tdotnode3 = nodearraylist2
+                                       assert tdotnode3 isa nullable TDot
+                                       var pmethidnode4 = nodearraylist3
+                                       assert pmethidnode4 isa nullable AMethid
+                                       var pexterncallnode1: nullable AFullPropExternCall = new AFullPropExternCall.init_afullpropexterncall(
+                                               ptypenode2,
+                                               tdotnode3,
+                                               pmethidnode4
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction125
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist5
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
-                                               pexprnode11
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var pexterncallnode1: nullable AInitPropExternCall = new AInitPropExternCall.init_ainitpropexterncall(
+                                               ptypenode2
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction126
        super ReduceAction
@@ -5588,90 +4134,57 @@ private class ReduceAction126
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist6
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
-                                               pexprnode11
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tdotnode3 = nodearraylist2
+                                       assert tdotnode3 isa nullable TDot
+                                       var tkwasnode4 = nodearraylist3
+                                       assert tkwasnode4 isa nullable TKwas
+                                       var ptypenode5 = nodearraylist7
+                                       assert ptypenode5 isa nullable AType
+                                       var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
+                                               ptypenode2,
+                                               tdotnode3,
+                                               tkwasnode4,
+                                               ptypenode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction127
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist6
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tdotnode3 = nodearraylist2
+                                       assert tdotnode3 isa nullable TDot
+                                       var tkwasnode4 = nodearraylist3
+                                       assert tkwasnode4 isa nullable TKwas
+                                       var ptypenode5 = nodearraylist5
+                                       assert ptypenode5 isa nullable AType
+                                       var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
+                                               ptypenode2,
+                                               tdotnode3,
+                                               tkwasnode4,
+                                               ptypenode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction128
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5681,81 +4194,55 @@ private class ReduceAction128
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist7
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist3
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnullablenode4 = nodearraylist7
+                                       assert tkwnullablenode4 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnullablenode4
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction129
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist6
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist3
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnullablenode4 = nodearraylist5
+                                       assert tkwnullablenode4 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnullablenode4
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction130
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5763,32 +4250,23 @@ private class ReduceAction130
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist3
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnotnode4 = nodearraylist7
+                                       assert tkwnotnode4 isa nullable TKwnot
+                                       var tkwnullablenode5 = nodearraylist9
+                                       assert tkwnullablenode5 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnotnode4,
+                                               tkwnullablenode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction131
        super ReduceAction
@@ -5802,848 +4280,691 @@ private class ReduceAction131
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist3
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnotnode4 = nodearraylist5
+                                       assert tkwnotnode4 isa nullable TKwnot
+                                       var tkwnullablenode5 = nodearraylist7
+                                       assert tkwnullablenode5 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnotnode4,
+                                               tkwnullablenode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction132
+private class ReduceAction133
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
-                                       )
-                                       node_list = ppropdefnode1
+                                       var tstringnode1 = nodearraylist1
+                                       node_list = tstringnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction133
+private class ReduceAction134
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist6
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var tkwinnode2 = nodearraylist1
+                                       assert tkwinnode2 isa nullable TKwin
+                                       var tstringnode3 = nodearraylist3
+                                       assert tstringnode3 isa nullable TString
+                                       var pinlanguagenode1: nullable AInLanguage = new AInLanguage.init_ainlanguage(
+                                               tkwinnode2,
+                                               tstringnode3
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pinlanguagenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction134
+private class ReduceAction135
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
+                                       var texterncodesegmentnode3 = nodearraylist1
+                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
+                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
                                                null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               texterncodesegmentnode3
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncodeblocknode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction135
+private class ReduceAction136
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var pinlanguagenode2 = nodearraylist1
+                                       assert pinlanguagenode2 isa nullable AInLanguage
+                                       var texterncodesegmentnode3 = nodearraylist2
+                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
+                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
+                                               pinlanguagenode2,
+                                               texterncodesegmentnode3
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pexterncodeblocknode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction136
+private class ReduceAction137
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
-                                       )
-                                       node_list = ppropdefnode1
+                                       var pexterncodeblocknode1 = nodearraylist1
+                                       node_list = pexterncodeblocknode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction137
+private class ReduceAction139
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwtypenode5 = nodearraylist3
-                                       assert tkwtypenode5 isa nullable TKwtype
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var ptypenode7 = nodearraylist5
-                                       assert ptypenode7 isa nullable AType
-                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
-                                       )
-                                       node_list = ppropdefnode1
+                                       var pexterncodeblocknode1 = nodearraylist2
+                                       node_list = pexterncodeblocknode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction138
+private class ReduceAction140
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwtypenode5 = nodearraylist4
-                                       assert tkwtypenode5 isa nullable TKwtype
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction139
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwreadablenode3 = nodearraylist1
-                                       assert tkwreadablenode3 isa nullable TKwreadable
-                                       var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
+                                       var listnode4 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                null,
-                                               tkwreadablenode3
-                                       )
-                                       node_list = pablenode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction140
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwredefnode2 = nodearraylist1
-                                       assert tkwredefnode2 isa nullable TKwredef
-                                       var tkwreadablenode3 = nodearraylist2
-                                       assert tkwreadablenode3 isa nullable TKwreadable
-                                       var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode2,
-                                               tkwreadablenode3
+                                               tclassidnode3,
+                                               listnode4,
+                                               pannotationsnode5
                                        )
-                                       node_list = pablenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction141
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwritablenode4 = nodearraylist1
-                                       assert tkwwritablenode4 isa nullable TKwwritable
-                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               null,
-                                               tkwwritablenode4
+                                       var listnode4 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var tclassidnode3 = nodearraylist2
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var pannotationsnode5 = nodearraylist3
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               tclassidnode3,
+                                               listnode4,
+                                               pannotationsnode5
                                        )
-                                       node_list = pablenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction142
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwredefnode2 = nodearraylist1
-                                       assert tkwredefnode2 isa nullable TKwredef
-                                       var tkwwritablenode4 = nodearraylist2
-                                       assert tkwwritablenode4 isa nullable TKwwritable
-                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode2,
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pannotationsnode6 = nodearraylist7
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                null,
-                                               tkwwritablenode4
+                                               tclassidnode3,
+                                               listnode5,
+                                               pannotationsnode6
                                        )
-                                       node_list = pablenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction143
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pvisibilitynode3 = nodearraylist1
-                                       assert pvisibilitynode3 isa nullable AVisibility
-                                       var tkwwritablenode4 = nodearraylist2
-                                       assert tkwwritablenode4 isa nullable TKwwritable
-                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               pvisibilitynode3,
-                                               tkwwritablenode4
+                                       var listnode5 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var tclassidnode3 = nodearraylist2
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist5
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pannotationsnode6 = nodearraylist8
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               tclassidnode3,
+                                               listnode5,
+                                               pannotationsnode6
                                        )
-                                       node_list = pablenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction144
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwredefnode2 = nodearraylist1
-                                       assert tkwredefnode2 isa nullable TKwredef
-                                       var pvisibilitynode3 = nodearraylist2
-                                       assert pvisibilitynode3 isa nullable AVisibility
-                                       var tkwwritablenode4 = nodearraylist3
-                                       assert tkwwritablenode4 isa nullable TKwwritable
-                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode2,
-                                               pvisibilitynode3,
-                                               tkwwritablenode4
-                                       )
-                                       node_list = pablenode1
+                                       var listnode2 = new Array[Object]
+                                       var ptypenode1 = nodearraylist1
+                                       if ptypenode1 != null then
+                                               listnode2.add(ptypenode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction145
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
-                                       )
-                                       node_list = pvisibilitynode1
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var ptypenode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if ptypenode1 != null then
+                                               listnode3.add(ptypenode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
 private class ReduceAction146
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwprivatenode2 = nodearraylist1
-                                       assert tkwprivatenode2 isa nullable TKwprivate
-                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
-                                               tkwprivatenode2
-                                       )
-                                       node_list = pvisibilitynode1
+                                       var ptypenode1 = nodearraylist3
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction147
+private class ReduceAction150
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwprotectednode2 = nodearraylist1
-                                       assert tkwprotectednode2 isa nullable TKwprotected
-                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
-                                               tkwprotectednode2
-                                       )
-                                       node_list = pvisibilitynode1
+                                       var pexprnode1 = nodearraylist2
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction148
+private class ReduceAction151
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwintrudenode2 = nodearraylist1
-                                       assert tkwintrudenode2 isa nullable TKwintrude
-                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
-                                               tkwintrudenode2
+                                       var listnode2 = new Array[Object]
+                                       var tkwendnode3 = nodearraylist2
+                                       assert tkwendnode3 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2,
+                                               tkwendnode3
                                        )
-                                       node_list = pvisibilitynode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction149
+private class ReduceAction152
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
-                                               tidnode2
+                                       var listnode2 = new Array[Object]
+                                       var tkwendnode3 = nodearraylist1
+                                       assert tkwendnode3 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2,
+                                               tkwendnode3
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction150
+private class ReduceAction153
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tplusnode2 = nodearraylist1
-                                       assert tplusnode2 isa nullable TPlus
-                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
-                                               tplusnode2
-                                       )
-                                       node_list = pmethidnode1
+                                       var pexprnode1 = nodearraylist1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction151
+private class ReduceAction154
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa nullable TMinus
-                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
-                                               tminusnode2
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode3,
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction152
+private class ReduceAction155
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tstarnode2 = nodearraylist1
-                                       assert tstarnode2 isa nullable TStar
-                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
-                                               tstarnode2
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4,
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction153
+private class ReduceAction156
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tslashnode2 = nodearraylist1
-                                       assert tslashnode2 isa nullable TSlash
-                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
-                                               tslashnode2
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode3,
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction154
+private class ReduceAction157
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tpercentnode2 = nodearraylist1
-                                       assert tpercentnode2 isa nullable TPercent
-                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
-                                               tpercentnode2
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4,
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction155
+private class ReduceAction158
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var teqnode2 = nodearraylist1
-                                       assert teqnode2 isa nullable TEq
-                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
-                                               teqnode2
-                                       )
-                                       node_list = pmethidnode1
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var tkwendnode4 = nodearraylist3
+                                       assert tkwendnode4 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode3,
+                                               tkwendnode4
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction156
+private class ReduceAction159
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tnenode2 = nodearraylist1
-                                       assert tnenode2 isa nullable TNe
-                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
-                                               tnenode2
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tkwendnode5 = nodearraylist4
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4,
+                                               tkwendnode5
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction157
+private class ReduceAction163
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tlenode2 = nodearraylist1
-                                       assert tlenode2 isa nullable TLe
-                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
-                                               tlenode2
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction158
+private class ReduceAction164
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tgenode2 = nodearraylist1
-                                       assert tgenode2 isa nullable TGe
-                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
-                                               tgenode2
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction159
+private class ReduceAction165
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tltnode2 = nodearraylist1
-                                       assert tltnode2 isa nullable TLt
-                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
-                                               tltnode2
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction160
+private class ReduceAction166
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tgtnode2 = nodearraylist1
-                                       assert tgtnode2 isa nullable TGt
-                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
-                                               tgtnode2
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               plabelnode3
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction161
+private class ReduceAction167
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tllnode2 = nodearraylist1
-                                       assert tllnode2 isa nullable TLl
-                                       var pmethidnode1: nullable ALlMethid = new ALlMethid.init_allmethid(
-                                               tllnode2
+                                       var tkwabortnode2 = nodearraylist1
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
+                                               tkwabortnode2
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction162
+private class ReduceAction168
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tggnode2 = nodearraylist1
-                                       assert tggnode2 isa nullable TGg
-                                       var pmethidnode1: nullable AGgMethid = new AGgMethid.init_aggmethid(
-                                               tggnode2
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction163
+private class ReduceAction169
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa nullable TCbra
-                                       var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
-                                               tobranode2,
-                                               tcbranode3
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               plabelnode3
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction164
+private class ReduceAction177
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tstarshipnode2 = nodearraylist1
-                                       assert tstarshipnode2 isa nullable TStarship
-                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
-                                               tstarshipnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction165
+private class ReduceAction178
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var tassignnode3 = nodearraylist2
-                                       assert tassignnode3 isa nullable TAssign
-                                       var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
-                                               tidnode2,
-                                               tassignnode3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist5
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist6
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction166
+private class ReduceAction179
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa nullable TCbra
-                                       var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
-                                               tobranode2,
-                                               tcbranode3,
-                                               tassignnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist6
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist7
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction167
+private class ReduceAction181
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode5 = new Array[Object]
-                                       var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               ptypenode3,
-                                               listnode5
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction168
+private class ReduceAction182
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -6651,50 +4972,44 @@ private class ReduceAction168
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       listnode3 = concat(listnode3, listnode2)
-                                       var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa nullable AType
-                                       var listnode5 = nodearraylist3
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               ptypenode4,
-                                               listnode6
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction169
+private class ReduceAction183
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode4 = new Array[Object]
-                                       var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               ptypenode3,
-                                               listnode4
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist4
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction170
+private class ReduceAction185
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -6702,360 +5017,1089 @@ private class ReduceAction170
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       listnode3 = concat(listnode3, listnode2)
-                                       var ptypenode4 = nodearraylist2
+                                       var pqualifiednode2 = nodearraylist1
+                                       assert pqualifiednode2 isa nullable AQualified
+                                       var tkwsupernode3 = nodearraylist2
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction186
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction187
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction188
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist5
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist6
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction189
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist6
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist7
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction191
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist2
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction192
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist3
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist4
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction194
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwdebugnode2 = nodearraylist1
+                                       assert tkwdebugnode2 isa nullable TKwdebug
+                                       var tkwtypenode3 = nodearraylist2
+                                       assert tkwtypenode3 isa nullable TKwtype
+                                       var pexprnode4 = nodearraylist5
+                                       assert pexprnode4 isa nullable AExpr
+                                       var ptypenode5 = nodearraylist3
+                                       assert ptypenode5 isa nullable AType
+                                       var pexprnode1: nullable ADebugTypeExpr = new ADebugTypeExpr.init_adebugtypeexpr(
+                                               tkwdebugnode2,
+                                               tkwtypenode3,
+                                               pexprnode4,
+                                               ptypenode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction195
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwlabelnode2 = nodearraylist1
+                                       assert tkwlabelnode2 isa nullable TKwlabel
+                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
+                                               tkwlabelnode2,
+                                               null
+                                       )
+                                       node_list = plabelnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction196
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwlabelnode2 = nodearraylist1
+                                       assert tkwlabelnode2 isa nullable TKwlabel
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
+                                               tkwlabelnode2,
+                                               tidnode3
+                                       )
+                                       node_list = plabelnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction197
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist3
                                        assert ptypenode4 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction198
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist4
+                                       assert ptypenode4 isa nullable AType
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               null,
+                                               null,
+                                               pannotationsnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction199
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction200
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist4
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist5
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
                                                ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               pannotationsnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction201
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist5
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var tassignnode4 = nodearraylist6
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction202
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode3 = nodearraylist2
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction203
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var tassignnode5 = nodearraylist6
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction204
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
                                                listnode5
                                        )
-                                       node_list = psignaturenode1
+                                       var tassignnode6 = nodearraylist5
+                                       assert tassignnode6 isa nullable TAssign
+                                       var pexprnode7 = nodearraylist6
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction205
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist5
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist6
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var tassignnode5 = nodearraylist7
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist8
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction171
+private class ReduceAction206
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist5
+                                       assert tidnode3 isa nullable TId
                                        var listnode5 = new Array[Object]
-                                       var listnode4 = nodearraylist1
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               null,
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var tassignnode6 = nodearraylist6
+                                       assert tassignnode6 isa nullable TAssign
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction207
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist6
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist7
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var tassignnode5 = nodearraylist8
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist9
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction208
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist6
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
                                                listnode5
                                        )
-                                       node_list = psignaturenode1
+                                       var tassignnode6 = nodearraylist7
+                                       assert tassignnode6 isa nullable TAssign
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction211
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction172
+private class ReduceAction212
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       listnode3 = concat(listnode3, listnode2)
-                                       var listnode5 = nodearraylist2
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               null,
-                                               listnode6
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
                                        )
-                                       node_list = psignaturenode1
+                                       var tassignnode6 = nodearraylist2
+                                       assert tassignnode6 isa nullable TAssign
+                                       var pexprnode7 = nodearraylist3
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction173
+private class ReduceAction213
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode4 = new Array[Object]
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               null,
-                                               listnode4
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode5,
+                                               pexprnode6
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction174
+private class ReduceAction214
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       listnode3 = concat(listnode3, listnode2)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               null,
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
                                                listnode5
                                        )
-                                       node_list = psignaturenode1
+                                       var tassignnode6 = nodearraylist3
+                                       assert tassignnode6 isa nullable TAssign
+                                       var pexprnode7 = nodearraylist4
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction175
+private class ReduceAction215
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var listnode2 = new Array[Object]
-                                       var listnode4 = new Array[Object]
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               null,
-                                               listnode4
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist4
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var tassignnode5 = nodearraylist5
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode5,
+                                               pexprnode6
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction176
+private class ReduceAction216
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa nullable TId
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       listnode3 = concat(listnode3, listnode2)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               null,
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
                                                listnode5
                                        )
-                                       node_list = psignaturenode1
+                                       var tassignnode6 = nodearraylist4
+                                       assert tassignnode6 isa nullable TAssign
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction177
+private class ReduceAction219
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode4 = new Array[Object]
-                                       var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               ptypenode3,
-                                               listnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+                                               pexprnode2,
+                                               pexprsnode3,
+                                               tassignnode4,
+                                               pexprnode5
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction178
+private class ReduceAction220
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       listnode3 = concat(listnode3, listnode2)
-                                       var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               ptypenode4,
-                                               listnode5
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist5
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var passignopnode4 = nodearraylist6
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction179
+private class ReduceAction221
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pparamnode1 = nodearraylist3
-                                       if pparamnode1 != null then
-                                               listnode2.add(pparamnode1)
-                                       end
-                                       node_list = listnode2
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode3 = nodearraylist2
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var passignopnode4 = nodearraylist3
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction180
+private class ReduceAction222
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pparamnode1 = nodearraylist3
-                                       var listnode2 = nodearraylist4
-                                       assert listnode2 isa Array[Object]
-                                       if pparamnode1 != null then
-                                               listnode3.add(pparamnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var passignopnode5 = nodearraylist6
+                                       assert passignopnode5 isa nullable AAssignOp
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction181
+private class ReduceAction223
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode1 = new Array[Object]
-                                       node_list = listnode1
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var passignopnode6 = nodearraylist5
+                                       assert passignopnode6 isa nullable AAssignOp
+                                       var pexprnode7 = nodearraylist6
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction182
+private class ReduceAction224
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pparamnode1 = nodearraylist3
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction183
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               null,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist5
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist6
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var passignopnode5 = nodearraylist7
+                                       assert passignopnode5 isa nullable AAssignOp
+                                       var pexprnode6 = nodearraylist8
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode5,
+                                               pexprnode6
                                        )
-                                       node_list = pparamnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction184
+private class ReduceAction225
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist5
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
                                        )
-                                       node_list = pparamnode1
+                                       var passignopnode6 = nodearraylist6
+                                       assert passignopnode6 isa nullable AAssignOp
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction185
+private class ReduceAction226
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var tdotdotdotnode4 = nodearraylist3
-                                       assert tdotdotdotnode4 isa nullable TDotdotdot
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               tdotdotdotnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist6
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist7
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var passignopnode5 = nodearraylist8
+                                       assert passignopnode5 isa nullable AAssignOp
+                                       var pexprnode6 = nodearraylist9
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode5,
+                                               pexprnode6
                                        )
-                                       node_list = pparamnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction186
+private class ReduceAction227
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist2
-                                       assert listnode1 isa Array[Object]
-                                       listnode2 = concat(listnode2, listnode1)
-                                       node_list = listnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist6
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var passignopnode6 = nodearraylist7
+                                       assert passignopnode6 isa nullable AAssignOp
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction187
+private class ReduceAction230
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -7064,917 +6108,973 @@ private class ReduceAction187
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tbangnode3 = nodearraylist1
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist2
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist3
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               null,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               null
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var passignopnode5 = nodearraylist3
+                                       assert passignopnode5 isa nullable AAssignOp
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode5,
+                                               pexprnode6
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction188
+private class ReduceAction231
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var tbangnode3 = nodearraylist2
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwbreaknode2,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               null
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var passignopnode6 = nodearraylist2
+                                       assert passignopnode6 isa nullable AAssignOp
+                                       var pexprnode7 = nodearraylist3
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode6,
+                                               pexprnode7
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction189
+private class ReduceAction232
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tbangnode3 = nodearraylist1
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist2
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist3
-                                       assert psignaturenode5 isa nullable ASignature
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var passignopnode5 = nodearraylist4
+                                       assert passignopnode5 isa nullable AAssignOp
                                        var pexprnode6 = nodearraylist5
                                        assert pexprnode6 isa nullable AExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               null,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode5,
                                                pexprnode6
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction190
+private class ReduceAction233
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var tbangnode3 = nodearraylist2
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwbreaknode2,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               pexprnode6
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var passignopnode6 = nodearraylist3
+                                       assert passignopnode6 isa nullable AAssignOp
+                                       var pexprnode7 = nodearraylist4
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode6,
+                                               pexprnode7
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction191
+private class ReduceAction234
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tbangnode3 = nodearraylist1
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist2
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist3
-                                       assert psignaturenode5 isa nullable ASignature
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist4
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var passignopnode5 = nodearraylist5
+                                       assert passignopnode5 isa nullable AAssignOp
                                        var pexprnode6 = nodearraylist6
                                        assert pexprnode6 isa nullable AExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               null,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode5,
                                                pexprnode6
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction192
+private class ReduceAction235
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var tbangnode3 = nodearraylist2
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pexprnode6 = nodearraylist7
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwbreaknode2,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               pexprnode6
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
                                        )
-                                       node_list = pclosuredeclnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction193
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode3 = nodearraylist1
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               null,
-                                               pexprnode3
+                                       var passignopnode6 = nodearraylist4
+                                       assert passignopnode6 isa nullable AAssignOp
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               passignopnode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction194
+private class ReduceAction238
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               null,
-                                               tclassidnode3,
-                                               listnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var passignopnode4 = nodearraylist3
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
+                                               pexprnode2,
+                                               pexprsnode3,
+                                               passignopnode4,
+                                               pexprnode5
                                        )
-                                       node_list = ptypenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction195
+private class ReduceAction239
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa nullable TKwnullable
-                                       var tclassidnode3 = nodearraylist2
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               tkwnullablenode2,
-                                               tclassidnode3,
-                                               listnode4
+                                       var tpluseqnode2 = nodearraylist1
+                                       assert tpluseqnode2 isa nullable TPluseq
+                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
+                                               tpluseqnode2
                                        )
-                                       node_list = ptypenode1
+                                       node_list = passignopnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction196
+private class ReduceAction240
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               null,
-                                               tclassidnode3,
-                                               listnode5
+                                       var tminuseqnode2 = nodearraylist1
+                                       assert tminuseqnode2 isa nullable TMinuseq
+                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
+                                               tminuseqnode2
                                        )
-                                       node_list = ptypenode1
+                                       node_list = passignopnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction197
+private class ReduceAction241
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa nullable TKwnullable
-                                       var tclassidnode3 = nodearraylist2
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               tkwnullablenode2,
-                                               tclassidnode3,
-                                               listnode5
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var plabelnode4 = nodearraylist3
+                                       assert plabelnode4 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode4
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction198
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       if ptypenode1 != null then
-                                               listnode2.add(ptypenode1)
-                                       end
-                                       node_list = listnode2
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction199
+private class ReduceAction242
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if ptypenode1 != null then
-                                               listnode3.add(ptypenode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction200
+private class ReduceAction243
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode1 = nodearraylist3
-                                       node_list = ptypenode1
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist6
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist8
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction202
+private class ReduceAction244
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist2
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist6
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               null
+                                       )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction203
+private class ReduceAction245
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist8
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction204
+private class ReduceAction246
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               null,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction205
+private class ReduceAction247
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               null,
+                                               pexprnode5
+                                       )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction206
+private class ReduceAction250
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3
+                                       var tkwloopnode2 = nodearraylist1
+                                       assert tkwloopnode2 isa nullable TKwloop
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var plabelnode4 = nodearraylist3
+                                       assert plabelnode4 isa nullable ALabel
+                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
+                                               tkwloopnode2,
+                                               pexprnode3,
+                                               plabelnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction207
+private class ReduceAction251
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4
+                                       var tkwloopnode2 = nodearraylist1
+                                       assert tkwloopnode2 isa nullable TKwloop
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
+                                               tkwloopnode2,
+                                               pexprnode3,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction208
+private class ReduceAction252
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3
+                                       var tkwwhilenode2 = nodearraylist1
+                                       assert tkwwhilenode2 isa nullable TKwwhile
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var plabelnode6 = nodearraylist7
+                                       assert plabelnode6 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction209
+private class ReduceAction253
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4
+                                       var tkwwhilenode2 = nodearraylist1
+                                       assert tkwwhilenode2 isa nullable TKwwhile
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction210
+private class ReduceAction254
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist2
+                                       var listnode4 = new Array[Object]
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwdonode6 = nodearraylist9
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist10
+                                       assert pexprnode7 isa nullable AExpr
+                                       var plabelnode8 = nodearraylist11
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               listnode4,
+                                               pexprnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode8
+                                       )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction213
+private class ReduceAction255
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
+                                       var listnode4 = new Array[Object]
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwdonode6 = nodearraylist9
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist10
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               listnode4,
+                                               pexprnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction214
+private class ReduceAction256
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode3 = nodearraylist2
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               pexprnode3
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var plabelnode6 = nodearraylist7
+                                       assert plabelnode6 isa nullable ALabel
+                                       var pexprnode1: nullable AWithExpr = new AWithExpr.init_awithexpr(
+                                               tkwwithnode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction215
+private class ReduceAction257
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               null,
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AWithExpr = new AWithExpr.init_awithexpr(
+                                               tkwwithnode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction216
+private class ReduceAction258
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               plabelnode3,
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist2
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               null,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction217
+private class ReduceAction259
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pannotationsnode7 = nodearraylist2
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                null,
-                                               pexprnode4
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction218
+private class ReduceAction261
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode4 = nodearraylist3
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var pexprnode4 = nodearraylist2
                                        assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               plabelnode3,
-                                               pexprnode4
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               null,
+                                               pexprnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction219
+private class ReduceAction262
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa nullable TKwabort
-                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
-                                               tkwabortnode2
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist5
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction220
+private class ReduceAction263
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
                                                null,
+                                               pexprnode4,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction221
+private class ReduceAction264
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               plabelnode3,
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               tidnode3,
+                                               pexprnode4,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction222
+private class ReduceAction265
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               null,
-                                               pexprnode4
-                                       )
-                                       node_list = pexprnode1
+                                       var tidnode1 = nodearraylist1
+                                       node_list = tidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction223
+private class ReduceAction267
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               plabelnode3,
-                                               pexprnode4
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwelsenode6 = nodearraylist9
+                                       assert tkwelsenode6 isa nullable TKwelse
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               tkwelsenode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction230
+private class ReduceAction269
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode6
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction231
+private class ReduceAction270
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode6
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction232
+private class ReduceAction271
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode3 = nodearraylist5
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AOrElseExpr = new AOrElseExpr.init_aorelseexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction233
+private class ReduceAction272
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var listnode6 = nodearraylist3
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AImpliesExpr = new AImpliesExpr.init_aimpliesexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction234
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               null,
-                                               tkwsupernode3,
-                                               listnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction235
+private class ReduceAction274
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -7982,214 +7082,166 @@ private class ReduceAction235
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable AQualified
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               listnode5
+                                       var tkwnotnode2 = nodearraylist1
+                                       assert tkwnotnode2 isa nullable TKwnot
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
+                                               tkwnotnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction236
+private class ReduceAction276
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction237
+private class ReduceAction277
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction238
+private class ReduceAction278
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwlabelnode2 = nodearraylist1
-                                       assert tkwlabelnode2 isa nullable TKwlabel
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
-                                               tkwlabelnode2,
-                                               tidnode3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = plabelnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction239
+private class ReduceAction279
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pclosuredefnode1 = nodearraylist1
-                                       if pclosuredefnode1 != null then
-                                               listnode2.add(pclosuredefnode1)
-                                       end
-                                       node_list = listnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction240
+private class ReduceAction280
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pclosuredefnode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pclosuredefnode1 != null then
-                                               listnode3.add(pclosuredefnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction241
+private class ReduceAction281
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable AExpr
-                                       var plabelnode7 = nodearraylist5
-                                       assert plabelnode7 isa nullable ALabel
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               plabelnode7
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction242
+private class ReduceAction282
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist4
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa nullable AExpr
-                                       var plabelnode8 = nodearraylist6
-                                       assert plabelnode8 isa nullable ALabel
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               plabelnode8
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction243
+private class ReduceAction283
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8198,202 +7250,124 @@ private class ReduceAction243
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction244
+private class ReduceAction284
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist4
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction245
+private class ReduceAction285
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               null,
-                                               pexprnode6,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var ptypenode3 = nodearraylist4
+                                       assert ptypenode3 isa nullable AType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
+                                               pexprnode2,
+                                               ptypenode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction246
+private class ReduceAction287
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode7 = nodearraylist6
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               null,
-                                               pexprnode7,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction247
+private class ReduceAction288
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction248
+private class ReduceAction290
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist4
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist6
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction249
+private class ReduceAction291
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8402,139 +7376,125 @@ private class ReduceAction249
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               tkwdonode5,
-                                               null,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction250
+private class ReduceAction292
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist4
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               null,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction251
+private class ReduceAction294
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pclosureidnode1: nullable ASimpleClosureId = new ASimpleClosureId.init_asimpleclosureid(
-                                               tidnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AStarstarExpr = new AStarstarExpr.init_astarstarexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosureidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction252
+private class ReduceAction296
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var pclosureidnode1: nullable ABreakClosureId = new ABreakClosureId.init_abreakclosureid(
-                                               tkwbreaknode2
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa nullable TMinus
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
+                                               tminusnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pclosureidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction253
+private class ReduceAction297
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode4 = nodearraylist1
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               null,
-                                               null,
-                                               pexprnode4
+                                       var tkwoncenode2 = nodearraylist1
+                                       assert tkwoncenode2 isa nullable TKwonce
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
+                                               tkwoncenode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction254
+private class ReduceAction299
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               null,
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pexprsnode5 = nodearraylist4
+                                       assert pexprsnode5 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
                                                null,
-                                               null
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction255
+private class ReduceAction300
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8542,96 +7502,77 @@ private class ReduceAction255
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa nullable AType
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var listnode6 = new Array[Object]
+                                       var pexprsnode5: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
                                                null,
-                                               null
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction256
+private class ReduceAction301
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               null,
-                                               tassignnode5,
-                                               pexprnode6
+                                       var tkwissetnode2 = nodearraylist1
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tattridnode4 = nodearraylist6
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
+                                               pexprnode3,
+                                               tattridnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction257
+private class ReduceAction302
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa nullable AType
-                                       var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                       var tkwissetnode2 = nodearraylist1
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode4 = nodearraylist3
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
+                                               pexprnode3,
+                                               tattridnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction258
+private class ReduceAction304
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -8639,186 +7580,161 @@ private class ReduceAction258
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist4
+                                       var tattridnode3 = nodearraylist5
                                        assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               tattridnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction259
+private class ReduceAction305
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tattridnode3 = nodearraylist1
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode3 = nodearraylist2
                                        assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               tattridnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction260
+private class ReduceAction307
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa nullable TAssign
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5,
-                                               tassignnode6,
-                                               pexprnode7
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction261
+private class ReduceAction309
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist5
+                                       assert tidnode3 isa nullable TId
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
                                        )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa nullable TAssign
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5,
-                                               tassignnode6,
-                                               pexprnode7
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction262
+private class ReduceAction311
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+                                       var tidnode3 = nodearraylist6
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               listnode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                               tidnode3,
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction263
+private class ReduceAction315
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa nullable AAssignOp
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                               tidnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction317
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction264
+private class ReduceAction319
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8826,64 +7742,47 @@ private class ReduceAction264
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
                                        )
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa nullable AAssignOp
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                               tidnode3,
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction265
+private class ReduceAction323
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var pqualifiednode2 = nodearraylist1
+                                       assert pqualifiednode2 isa nullable AQualified
+                                       var tkwsupernode3 = nodearraylist2
+                                       assert tkwsupernode3 isa nullable TKwsuper
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa nullable AAssignOp
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               passignopnode6,
-                                               pexprnode7
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction266
+private class ReduceAction325
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8892,149 +7791,161 @@ private class ReduceAction266
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa nullable TKwinit
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
                                        )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa nullable AAssignOp
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               passignopnode6,
-                                               pexprnode7
+                                               tkwinitnode3,
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction267
+private class ReduceAction327
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa nullable AAssignOp
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
-                                               listnode4,
-                                               passignopnode5,
-                                               pexprnode6
+                                               tkwinitnode3,
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction268
+private class ReduceAction328
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tpluseqnode2 = nodearraylist1
-                                       assert tpluseqnode2 isa nullable TPluseq
-                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
-                                               tpluseqnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
+                                               pexprnode2,
+                                               pexprsnode3
                                        )
-                                       node_list = passignopnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction269
+private class ReduceAction329
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminuseqnode2 = nodearraylist1
-                                       assert tminuseqnode2 isa nullable TMinuseq
-                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
-                                               tminuseqnode2
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode4 = nodearraylist6
+                                       assert tidnode4 isa nullable TId
+                                       var pexprsnode5 = nodearraylist7
+                                       assert pexprsnode5 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               pexprsnode5
                                        )
-                                       node_list = passignopnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction270
+private class ReduceAction330
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var plabelnode4 = nodearraylist3
-                                       assert plabelnode4 isa nullable ALabel
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3,
-                                               plabelnode4
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode4 = nodearraylist6
+                                       assert tidnode4 isa nullable TId
+                                       var listnode6 = new Array[Object]
+                                       var pexprsnode5: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction271
+private class ReduceAction331
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3,
-                                               null
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode4 = nodearraylist7
+                                       assert tidnode4 isa nullable TId
+                                       var pexprsnode5 = nodearraylist8
+                                       assert pexprsnode5 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction272
+private class ReduceAction332
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9042,56 +7953,59 @@ private class ReduceAction272
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode5
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode4 = nodearraylist7
+                                       assert tidnode4 isa nullable TId
+                                       var listnode6 = new Array[Object]
+                                       var pexprsnode5: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction273
+private class ReduceAction333
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               null
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode4 = nodearraylist8
+                                       assert tidnode4 isa nullable TId
+                                       var pexprsnode5 = nodearraylist9
+                                       assert pexprsnode5 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction274
+private class ReduceAction334
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9104,60 +8018,72 @@ private class ReduceAction274
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode5
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode4 = nodearraylist8
+                                       assert tidnode4 isa nullable TId
+                                       var listnode6 = new Array[Object]
+                                       var pexprsnode5: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction275
+private class ReduceAction337
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               null,
-                                               pexprnode5
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var toparnode4 = nodearraylist6
+                                       assert toparnode4 isa nullable TOpar
+                                       var ptypenode5 = nodearraylist8
+                                       assert ptypenode5 isa nullable AType
+                                       var tcparnode6 = nodearraylist10
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
+                                               pexprnode2,
+                                               tkwasnode3,
+                                               toparnode4,
+                                               ptypenode5,
+                                               tcparnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction276
+private class ReduceAction338
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9165,374 +8091,294 @@ private class ReduceAction276
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               null,
-                                               pexprnode5
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var toparnode4 = nodearraylist6
+                                       assert toparnode4 isa nullable TOpar
+                                       var tkwnotnode5 = nodearraylist8
+                                       assert tkwnotnode5 isa nullable TKwnot
+                                       var tkwnullnode6 = nodearraylist10
+                                       assert tkwnullnode6 isa nullable TKwnull
+                                       var tcparnode7 = nodearraylist12
+                                       assert tcparnode7 isa nullable TCpar
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
+                                               pexprnode2,
+                                               tkwasnode3,
+                                               toparnode4,
+                                               tkwnotnode5,
+                                               tkwnullnode6,
+                                               tcparnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction279
+private class ReduceAction339
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwloopnode2 = nodearraylist1
-                                       assert tkwloopnode2 isa nullable TKwloop
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var plabelnode4 = nodearraylist3
-                                       assert plabelnode4 isa nullable ALabel
-                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
-                                               tkwloopnode2,
-                                               pexprnode3,
-                                               plabelnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnotnode5 = nodearraylist6
+                                       assert tkwnotnode5 isa nullable TKwnot
+                                       var tkwnullnode6 = nodearraylist8
+                                       assert tkwnullnode6 isa nullable TKwnull
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
+                                               pexprnode2,
+                                               tkwasnode3,
+                                               null,
+                                               tkwnotnode5,
+                                               tkwnullnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction280
+private class ReduceAction340
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwloopnode2 = nodearraylist1
-                                       assert tkwloopnode2 isa nullable TKwloop
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
-                                               tkwloopnode2,
-                                               pexprnode3,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tdotdotdotnode3 = nodearraylist2
+                                       assert tdotdotdotnode3 isa nullable TDotdotdot
+                                       var pexprnode1: nullable AVarargExpr = new AVarargExpr.init_avarargexpr(
+                                               pexprnode2,
+                                               tdotdotdotnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction281
+private class ReduceAction341
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa nullable TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var plabelnode6 = nodearraylist7
-                                       assert plabelnode6 isa nullable ALabel
-                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5,
-                                               plabelnode6
+                                       var tkwselfnode2 = nodearraylist1
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
+                                               tkwselfnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction282
+private class ReduceAction342
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa nullable TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5,
-                                               null
+                                       var tkwtruenode2 = nodearraylist1
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
+                                               tkwtruenode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction283
+private class ReduceAction343
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa nullable TKwfor
-                                       var tidnode3 = nodearraylist3
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa nullable AExpr
-                                       var tkwdonode5 = nodearraylist9
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist10
-                                       assert pexprnode6 isa nullable AExpr
-                                       var plabelnode7 = nodearraylist11
-                                       assert plabelnode7 isa nullable ALabel
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
-                                               tidnode3,
-                                               pexprnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               plabelnode7
+                                       var tkwfalsenode2 = nodearraylist1
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
+                                               tkwfalsenode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction284
+private class ReduceAction344
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa nullable TKwfor
-                                       var tidnode3 = nodearraylist3
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa nullable AExpr
-                                       var tkwdonode5 = nodearraylist9
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist10
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
-                                               tidnode3,
-                                               pexprnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               null
+                                       var tkwnullnode2 = nodearraylist1
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
+                                               tkwnullnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction285
+private class ReduceAction345
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist4
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               null,
-                                               pexprnode4,
-                                               pexprnode5
+                                       var tnumbernode2 = nodearraylist1
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ADecIntExpr = new ADecIntExpr.init_adecintexpr(
+                                               tnumbernode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction286
+private class ReduceAction346
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist5
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               tidnode3,
-                                               pexprnode4,
-                                               pexprnode5
+                                       var thexnumbernode2 = nodearraylist1
+                                       assert thexnumbernode2 isa nullable THexNumber
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AHexIntExpr = new AHexIntExpr.init_ahexintexpr(
+                                               thexnumbernode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction287
+private class ReduceAction347
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               null,
-                                               pexprnode4,
-                                               null
+                                       var tfloatnode2 = nodearraylist1
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
+                                               tfloatnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction288
+private class ReduceAction348
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               tidnode3,
-                                               pexprnode4,
-                                               null
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa nullable TChar
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
+                                               tcharnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction289
+private class ReduceAction349
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode1 = nodearraylist1
-                                       node_list = tidnode1
+                                       var tstringnode2 = nodearraylist1
+                                       assert tstringnode2 isa nullable TString
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
+                                               tstringnode2,
+                                               pannotationsnode3
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction293
+private class ReduceAction352
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var listnode5 = nodearraylist3
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
-                                               pexprnode2,
-                                               listnode4,
-                                               listnode6
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tcbranode5 = nodearraylist9
+                                       assert tcbranode5 isa nullable TCbra
+                                       var pannotationsnode6 = nodearraylist10
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
+                                               tobranode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               tcbranode5,
+                                               pannotationsnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction295
+private class ReduceAction353
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -9543,103 +8389,114 @@ private class ReduceAction295
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
                                        var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
-                                               tkwifnode2,
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tobranode5 = nodearraylist9
+                                       assert tobranode5 isa nullable TObra
+                                       var pannotationsnode6 = nodearraylist10
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
+                                               tobranode2,
                                                pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                               pexprnode4,
+                                               tobranode5,
+                                               pannotationsnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction297
+private class ReduceAction354
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode4 = new Array[Object]
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var ptypenode5 = nodearraylist4
+                                       assert ptypenode5 isa nullable AType
+                                       var tcbranode6 = nodearraylist5
+                                       assert tcbranode6 isa nullable TCbra
+                                       var pannotationsnode7 = nodearraylist6
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
+                                               tobranode2,
+                                               listnode4,
+                                               ptypenode5,
+                                               tcbranode6,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction298
+private class ReduceAction355
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tcparnode4 = nodearraylist5
+                                       assert tcparnode4 isa nullable TCpar
+                                       var pannotationsnode5 = nodearraylist6
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
+                                               toparnode2,
+                                               pexprnode3,
+                                               tcparnode4,
+                                               pannotationsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction299
+private class ReduceAction357
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist5
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AOrElseExpr = new AOrElseExpr.init_aorelseexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode1: nullable AManyExpr = new AManyExpr.init_amanyexpr(
+                                               listnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction301
+private class ReduceAction358
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9647,136 +8504,113 @@ private class ReduceAction301
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa nullable TKwnot
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
-                                               tkwnotnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist3
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction303
+private class ReduceAction359
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction304
+private class ReduceAction360
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction305
+private class ReduceAction362
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction306
+private class ReduceAction364
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction307
+private class ReduceAction365
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
+                                       var listnode4 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       listnode4 = concat(listnode4, listnode2)
+                                       if pexprnode3 != null then
+                                               listnode4.add(pexprnode3)
+                                       end
+                                       var pannotationsnode5 = nodearraylist3
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode4,
+                                               pannotationsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction308
+private class ReduceAction366
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9785,21 +8619,29 @@ private class ReduceAction308
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       listnode5 = concat(listnode5, listnode2)
+                                       listnode5 = concat(listnode5, listnode3)
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pannotationsnode6 = nodearraylist4
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode5,
+                                               pannotationsnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction309
+private class ReduceAction367
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9808,182 +8650,148 @@ private class ReduceAction309
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       var pexprnode2 = nodearraylist3
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction310
+private class ReduceAction368
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction311
+private class ReduceAction369
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tstartstringnode2 = nodearraylist1
+                                       assert tstartstringnode2 isa nullable TStartString
+                                       var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
+                                               tstartstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction312
+private class ReduceAction372
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tmidstringnode2 = nodearraylist1
+                                       assert tmidstringnode2 isa nullable TMidString
+                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
+                                               tmidstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction313
+private class ReduceAction373
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa nullable AType
-                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
-                                               pexprnode2,
-                                               ptypenode3
+                                       var tendstringnode2 = nodearraylist1
+                                       assert tendstringnode2 isa nullable TEndString
+                                       var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
+                                               tendstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction315
+private class ReduceAction374
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode5 = new Array[Object]
+                                       var tatnode2 = nodearraylist1
+                                       assert tatnode2 isa nullable TAt
+                                       var pannotationnode4 = nodearraylist2
+                                       assert pannotationnode4 isa nullable AAnnotation
+                                       if pannotationnode4 != null then
+                                               listnode5.add(pannotationnode4)
+                                       end
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               tatnode2,
+                                               null,
+                                               listnode5,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction316
+private class ReduceAction375
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode5 = new Array[Object]
+                                       var tatnode2 = nodearraylist1
+                                       assert tatnode2 isa nullable TAt
+                                       var toparnode3 = nodearraylist2
+                                       assert toparnode3 isa nullable TOpar
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tcparnode6 = nodearraylist6
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               tatnode2,
+                                               toparnode3,
+                                               listnode5,
+                                               tcparnode6
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction318
+private class ReduceAction376
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
+                                       var pannotationsnode1 = nodearraylist1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction319
+private class ReduceAction378
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9992,240 +8800,251 @@ private class ReduceAction319
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode7 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var patidnode5 = nodearraylist3
+                                       assert patidnode5 isa nullable AAtid
+                                       var pannotationsnode9 = nodearraylist4
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode5,
+                                               null,
+                                               listnode7,
+                                               null,
+                                               pannotationsnode9
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction320
+private class ReduceAction379
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode8 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var patidnode5 = nodearraylist3
+                                       assert patidnode5 isa nullable AAtid
+                                       var toparnode6 = nodearraylist4
+                                       assert toparnode6 isa nullable TOpar
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tcparnode9 = nodearraylist8
+                                       assert tcparnode9 isa nullable TCpar
+                                       var pannotationsnode10 = nodearraylist9
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode5,
+                                               toparnode6,
+                                               listnode8,
+                                               tcparnode9,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction322
+private class ReduceAction380
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa nullable TMinus
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
-                                               tminusnode2,
-                                               pexprnode3
+                                       var listnode5 = new Array[Object]
+                                       var listnode4 = nodearraylist1
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode5,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction323
+private class ReduceAction381
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa nullable TKwonce
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
-                                               tkwoncenode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode2 = new Array[Object]
+                                       var pannotationnode1 = nodearraylist1
+                                       if pannotationnode1 != null then
+                                               listnode2.add(pannotationnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction325
+private class ReduceAction382
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               null,
-                                               listnode6
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var pannotationnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pannotationnode1 != null then
+                                               listnode3.add(pannotationnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction326
+private class ReduceAction385
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa nullable TKwisset
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tattridnode4 = nodearraylist5
-                                       assert tattridnode4 isa nullable TAttrid
-                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
-                                               tkwissetnode2,
-                                               pexprnode3,
-                                               tattridnode4
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction327
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa nullable TKwisset
-                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tattridnode4 = nodearraylist2
-                                       assert tattridnode4 isa nullable TAttrid
-                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
-                                               tkwissetnode2,
-                                               pexprnode3,
-                                               tattridnode4
+                                       var listnode8 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var patidnode5 = nodearraylist3
+                                       assert patidnode5 isa nullable AAtid
+                                       var pexprnode7 = nodearraylist4
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode5,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction328
+private class ReduceAction387
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
-                                       )
-                                       node_list = pexprnode1
+                                       var pannotationnode1 = nodearraylist3
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction329
+private class ReduceAction389
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
+                                       var listnode7 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var patidnode5 = nodearraylist4
+                                       assert patidnode5 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode5,
+                                               null,
+                                               listnode7,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction336
+private class ReduceAction390
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
-                                               pexprnode2,
-                                               listnode4,
-                                               listnode5
+                                       var listnode7 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var patidnode5 = nodearraylist4
+                                       assert patidnode5 isa nullable AAtid
+                                       var pannotationsnode9 = nodearraylist5
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode5,
+                                               null,
+                                               listnode7,
+                                               null,
+                                               pannotationsnode9
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction337
+private class ReduceAction391
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10233,33 +9052,42 @@ private class ReduceAction337
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa nullable TId
-                                       var listnode5 = nodearraylist7
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               tidnode4,
-                                               listnode6
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var patidnode5 = nodearraylist4
+                                       assert patidnode5 isa nullable AAtid
+                                       var toparnode6 = nodearraylist5
+                                       assert toparnode6 isa nullable TOpar
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tcparnode9 = nodearraylist8
+                                       assert tcparnode9 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode5,
+                                               toparnode6,
+                                               listnode8,
+                                               tcparnode9,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction338
+private class ReduceAction392
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10269,298 +9097,377 @@ private class ReduceAction338
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var patidnode5 = nodearraylist4
+                                       assert patidnode5 isa nullable AAtid
+                                       var toparnode6 = nodearraylist5
+                                       assert toparnode6 isa nullable TOpar
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tcparnode9 = nodearraylist8
+                                       assert tcparnode9 isa nullable TCpar
+                                       var pannotationsnode10 = nodearraylist9
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode5,
+                                               toparnode6,
+                                               listnode8,
+                                               tcparnode9,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction339
+private class ReduceAction393
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var patidnode5 = nodearraylist4
+                                       assert patidnode5 isa nullable AAtid
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode5,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction340
+private class ReduceAction394
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       listnode3 = concat(listnode3, listnode2)
-                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
-                                               listnode3
+                                       var listnode7 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var patidnode5 = nodearraylist2
+                                       assert patidnode5 isa nullable AAtid
+                                       var ppropdefnode1: nullable AAnnotPropdef = new AAnnotPropdef.init_aannotpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               patidnode5,
+                                               null,
+                                               listnode7,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction341
+private class ReduceAction395
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa nullable TKwself
-                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
-                                               tkwselfnode2
+                                       var listnode7 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var patidnode5 = nodearraylist2
+                                       assert patidnode5 isa nullable AAtid
+                                       var pannotationsnode9 = nodearraylist3
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAnnotPropdef = new AAnnotPropdef.init_aannotpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               patidnode5,
+                                               null,
+                                               listnode7,
+                                               null,
+                                               pannotationsnode9
                                        )
-                                       node_list = pexprnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction342
+private class ReduceAction396
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa nullable TKwtrue
-                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
-                                               tkwtruenode2
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var patidnode5 = nodearraylist2
+                                       assert patidnode5 isa nullable AAtid
+                                       var toparnode6 = nodearraylist3
+                                       assert toparnode6 isa nullable TOpar
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tcparnode9 = nodearraylist6
+                                       assert tcparnode9 isa nullable TCpar
+                                       var ppropdefnode1: nullable AAnnotPropdef = new AAnnotPropdef.init_aannotpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               patidnode5,
+                                               toparnode6,
+                                               listnode8,
+                                               tcparnode9,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction343
+private class ReduceAction397
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa nullable TKwfalse
-                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
-                                               tkwfalsenode2
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var patidnode5 = nodearraylist2
+                                       assert patidnode5 isa nullable AAtid
+                                       var toparnode6 = nodearraylist3
+                                       assert toparnode6 isa nullable TOpar
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tcparnode9 = nodearraylist6
+                                       assert tcparnode9 isa nullable TCpar
+                                       var pannotationsnode10 = nodearraylist7
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAnnotPropdef = new AAnnotPropdef.init_aannotpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               patidnode5,
+                                               toparnode6,
+                                               listnode8,
+                                               tcparnode9,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction344
+private class ReduceAction398
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa nullable TKwnull
-                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
-                                               tkwnullnode2
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var patidnode5 = nodearraylist2
+                                       assert patidnode5 isa nullable AAtid
+                                       var listnode7 = nodearraylist3
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var ppropdefnode1: nullable AAnnotPropdef = new AAnnotPropdef.init_aannotpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               patidnode5,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction402
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var pexprnode1: nullable ATypeExpr = new ATypeExpr.init_atypeexpr(
+                                               ptypenode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction345
+private class ReduceAction405
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa nullable TNumber
-                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
-                                               tnumbernode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pmethidnode3 = nodearraylist4
+                                       assert pmethidnode3 isa nullable AMethid
+                                       var pexprnode1: nullable AMethidExpr = new AMethidExpr.init_amethidexpr(
+                                               pexprnode2,
+                                               pmethidnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction346
+private class ReduceAction406
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa nullable TFloat
-                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
-                                               tfloatnode2
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var pmethidnode3 = nodearraylist1
+                                       assert pmethidnode3 isa nullable AMethid
+                                       var pexprnode1: nullable AMethidExpr = new AMethidExpr.init_amethidexpr(
+                                               pexprnode2,
+                                               pmethidnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction347
+private class ReduceAction407
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa nullable TChar
-                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
-                                               tcharnode2
+                                       var pannotationsnode2 = nodearraylist1
+                                       assert pannotationsnode2 isa nullable AAnnotations
+                                       var pexprnode1: nullable AAtExpr = new AAtExpr.init_aatexpr(
+                                               pannotationsnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction348
+private class ReduceAction408
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa nullable TString
-                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
-                                               tstringnode2
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var patidnode1: nullable AIdAtid = new AIdAtid.init_aidatid(
+                                               tidnode2
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction351
+private class ReduceAction409
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa nullable AType
-                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
-                                               ptypenode4
+                                       var tkwexternnode2 = nodearraylist1
+                                       assert tkwexternnode2 isa nullable TKwextern
+                                       var patidnode1: nullable AKwexternAtid = new AKwexternAtid.init_akwexternatid(
+                                               tkwexternnode2
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction352
+private class ReduceAction410
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist12 = p.pop
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa nullable TKwnot
-                                       var tkwnullnode5 = nodearraylist10
-                                       assert tkwnullnode5 isa nullable TKwnull
-                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
-                                               tkwnotnode4,
-                                               tkwnullnode5
+                                       var tkwabstractnode2 = nodearraylist1
+                                       assert tkwabstractnode2 isa nullable TKwabstract
+                                       var patidnode1: nullable AKwabstractAtid = new AKwabstractAtid.init_akwabstractatid(
+                                               tkwabstractnode2
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction353
+private class ReduceAction411
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       listnode4 = concat(listnode4, listnode2)
-                                       if pexprnode3 != null then
-                                               listnode4.add(pexprnode3)
-                                       end
-                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode4
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var pexprsnode1: nullable AParExprs = new AParExprs.init_aparexprs(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pexprsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction354
+private class ReduceAction412
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10568,178 +9475,177 @@ private class ReduceAction354
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       listnode5 = concat(listnode5, listnode2)
-                                       listnode5 = concat(listnode5, listnode3)
-                                       if pexprnode4 != null then
-                                               listnode5.add(pexprnode4)
-                                       end
-                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode5
+                                       var listnode3 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var pexprsnode1: nullable AParExprs = new AParExprs.init_aparexprs(
+                                               toparnode2,
+                                               listnode3,
+                                               tcparnode4
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pexprsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction355
+private class ReduceAction414
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       var pexprnode2 = nodearraylist3
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
-                                       node_list = listnode3
+                                       var pexprsnode1: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode3
+                                       )
+                                       node_list = pexprsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction356
+private class ReduceAction416
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tstartstringnode2 = nodearraylist1
-                                       assert tstartstringnode2 isa nullable TStartString
-                                       var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
-                                               tstartstringnode2
+                                       var listnode2 = new Array[Object]
+                                       var pexprsnode1: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode2
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pexprsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction358
+private class ReduceAction417
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tmidstringnode2 = nodearraylist1
-                                       assert tmidstringnode2 isa nullable TMidString
-                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
-                                               tmidstringnode2
+                                       var listnode4 = new Array[Object]
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcbranode5 = nodearraylist4
+                                       assert tcbranode5 isa nullable TCbra
+                                       var pexprsnode1: nullable ABraExprs = new ABraExprs.init_abraexprs(
+                                               tobranode2,
+                                               listnode4,
+                                               tcbranode5
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pexprsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction359
+private class ReduceAction418
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tendstringnode2 = nodearraylist1
-                                       assert tendstringnode2 isa nullable TEndString
-                                       var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
-                                               tendstringnode2
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       listnode3 = concat(listnode3, listnode2)
+                                       var pexprsnode1: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode3
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pexprsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction360
+private class ReduceAction420
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist3
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist3
+                                       assert listnode2 isa Array[Object]
                                        if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
+                                               listnode3.add(pexprnode1)
                                        end
-                                       node_list = listnode2
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction361
+private class ReduceAction421
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       var listnode2 = nodearraylist5
-                                       assert listnode2 isa Array[Object]
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction363
+private class ReduceAction422
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var listnode1 = new Array[Object]
-                                       node_list = listnode1
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = nodearraylist3
+                                       assert listnode1 isa Array[Object]
+                                       listnode2 = concat(listnode2, listnode1)
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction366
+private class ReduceAction423
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       listnode2 = concat(listnode2, listnode1)
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction424
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var tidnode1 = nodearraylist1
+                                       if tidnode1 != null then
+                                               listnode2.add(tidnode1)
                                        end
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction371
+private class ReduceAction425
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10748,89 +9654,107 @@ private class ReduceAction371
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist3
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       var tidnode2 = nodearraylist4
+                                       listnode3 = concat(listnode3, listnode1)
+                                       if tidnode2 != null then
+                                               listnode3.add(tidnode2)
+                                       end
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction372
+private class ReduceAction426
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist2
-                                       assert listnode1 isa Array[Object]
-                                       listnode2 = concat(listnode2, listnode1)
-                                       node_list = listnode2
+                                       var listnode3 = new Array[Object]
+                                       var tidnode4 = nodearraylist1
+                                       assert tidnode4 isa nullable TId
+                                       var pmodulenamenode1: nullable AModuleName = new AModuleName.init_amodulename(
+                                               null,
+                                               listnode3,
+                                               tidnode4
+                                       )
+                                       node_list = pmodulenamenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction373
+private class ReduceAction427
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist1
-                                       assert listnode1 isa Array[Object]
-                                       listnode2 = concat(listnode2, listnode1)
-                                       node_list = listnode2
+                                       var listnode4 = new Array[Object]
+                                       var listnode3 = nodearraylist1
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tidnode5 = nodearraylist2
+                                       assert tidnode5 isa nullable TId
+                                       var pmodulenamenode1: nullable AModuleName = new AModuleName.init_amodulename(
+                                               null,
+                                               listnode4,
+                                               tidnode5
+                                       )
+                                       node_list = pmodulenamenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction374
+private class ReduceAction428
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var tidnode1 = nodearraylist1
-                                       if tidnode1 != null then
-                                               listnode2.add(tidnode1)
-                                       end
-                                       node_list = listnode2
+                                       var listnode3 = new Array[Object]
+                                       var tquadnode2 = nodearraylist1
+                                       assert tquadnode2 isa nullable TQuad
+                                       var tidnode4 = nodearraylist3
+                                       assert tidnode4 isa nullable TId
+                                       var pmodulenamenode1: nullable AModuleName = new AModuleName.init_amodulename(
+                                               tquadnode2,
+                                               listnode3,
+                                               tidnode4
+                                       )
+                                       node_list = pmodulenamenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction375
+private class ReduceAction429
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1
-                                       assert listnode1 isa Array[Object]
-                                       var tidnode2 = nodearraylist5
-                                       listnode3 = concat(listnode3, listnode1)
-                                       if tidnode2 != null then
-                                               listnode3.add(tidnode2)
-                                       end
-                                       node_list = listnode3
+                                       var listnode4 = new Array[Object]
+                                       var tquadnode2 = nodearraylist1
+                                       assert tquadnode2 isa nullable TQuad
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tidnode5 = nodearraylist4
+                                       assert tidnode5 isa nullable TId
+                                       var pmodulenamenode1: nullable AModuleName = new AModuleName.init_amodulename(
+                                               tquadnode2,
+                                               listnode4,
+                                               tidnode5
+                                       )
+                                       node_list = pmodulenamenode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction376
+private class ReduceAction430
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10846,10 +9770,8 @@ private class ReduceAction376
                                        node_list = pqualifiednode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction377
+private class ReduceAction431
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10869,10 +9791,8 @@ private class ReduceAction377
                                        node_list = pqualifiednode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction378
+private class ReduceAction432
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10889,10 +9809,80 @@ private class ReduceAction378
                                        node_list = pqualifiednode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction379
+private class ReduceAction434
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tclassidnode1 = nodearraylist1
+                                       node_list = tclassidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction435
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tclassidnode1 = nodearraylist2
+                                       node_list = tclassidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction436
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tclassidnode1 = nodearraylist3
+                                       node_list = tclassidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction438
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pmethidnode1 = nodearraylist1
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction439
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pmethidnode1 = nodearraylist2
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction440
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pmethidnode1 = nodearraylist3
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction442
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10904,10 +9894,8 @@ private class ReduceAction379
                                        node_list = tidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction380
+private class ReduceAction443
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10919,10 +9907,19 @@ private class ReduceAction380
                                        node_list = tclassidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction381
+private class ReduceAction445
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwendnode1 = nodearraylist1
+                                       node_list = tkwendnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction446
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10930,10 +9927,8 @@ private class ReduceAction381
                                        var nodearraylist1 = p.pop
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction383
+private class ReduceAction448
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10949,10 +9944,8 @@ private class ReduceAction383
                                        node_list = pdocnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction384
+private class ReduceAction449
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10969,21 +9962,8 @@ private class ReduceAction384
                                        node_list = pdocnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction386
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       node_list = null
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction387
+private class ReduceAction452
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -10993,10 +9973,8 @@ private class ReduceAction387
                                        node_list = pdocnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction388
+private class ReduceAction453
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11005,10 +9983,8 @@ private class ReduceAction388
                                        var nodearraylist1 = p.pop
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction389
+private class ReduceAction454
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11018,14 +9994,13 @@ private class ReduceAction389
                                        var nodearraylist1 = p.pop
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction637
+private class ReduceAction783
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -11033,7 +10008,7 @@ private class ReduceAction637
                                        assert tkwissetnode2 isa nullable TKwisset
                                        var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
-                                       var tattridnode4 = nodearraylist3
+                                       var tattridnode4 = nodearraylist4
                                        assert tattridnode4 isa nullable TAttrid
                                        var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
                                                tkwissetnode2,
@@ -11043,19 +10018,18 @@ private class ReduceAction637
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction638
+private class ReduceAction785
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist2
+                                       var tattridnode3 = nodearraylist3
                                        assert tattridnode3 isa nullable TAttrid
                                        var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
@@ -11064,10 +10038,8 @@ private class ReduceAction638
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction639
+private class ReduceAction786
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11075,28 +10047,70 @@ private class ReduceAction639
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist2
                                        assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
                                        var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5,
-                                               listnode6
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction787
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction788
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist4
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction642
+private class ReduceAction789
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11104,26 +10118,71 @@ private class ReduceAction642
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa nullable TId
                                        var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction796
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var tkwinitnode3 = nodearraylist2
                                        assert tkwinitnode3 isa nullable TKwinit
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
                                        var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction797
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist2
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
                                                listnode5
                                        )
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction655
+private class ReduceAction820
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11135,23 +10194,18 @@ private class ReduceAction655
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction656
+private class ReduceAction821
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var pexprnode1: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
+                                       var pexprnode1: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction663
+private class ReduceAction979
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11165,10 +10219,8 @@ private class ReduceAction663
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction664
+private class ReduceAction980
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11186,27 +10238,23 @@ private class ReduceAction664
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction665
+private class ReduceAction981
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var pclassdefnode1 = nodearraylist1
-                                       if pclassdefnode1 != null then
-                                               listnode2.add(pclassdefnode1)
+                                       var pexterncodeblocknode1 = nodearraylist1
+                                       if pexterncodeblocknode1 != null then
+                                               listnode2.add(pexterncodeblocknode1)
                                        end
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction666
+private class ReduceAction982
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11216,35 +10264,31 @@ private class ReduceAction666
                                        var listnode3 = new Array[Object]
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       var pclassdefnode2 = nodearraylist2
+                                       var pexterncodeblocknode2 = nodearraylist2
                                        listnode3 = concat(listnode3, listnode1)
-                                       if pclassdefnode2 != null then
-                                               listnode3.add(pclassdefnode2)
+                                       if pexterncodeblocknode2 != null then
+                                               listnode3.add(pexterncodeblocknode2)
                                        end
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction667
+private class ReduceAction983
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var ppropdefnode1 = nodearraylist1
-                                       if ppropdefnode1 != null then
-                                               listnode2.add(ppropdefnode1)
+                                       var pclassdefnode1 = nodearraylist1
+                                       if pclassdefnode1 != null then
+                                               listnode2.add(pclassdefnode1)
                                        end
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction668
+private class ReduceAction984
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11254,35 +10298,31 @@ private class ReduceAction668
                                        var listnode3 = new Array[Object]
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       var ppropdefnode2 = nodearraylist2
+                                       var pclassdefnode2 = nodearraylist2
                                        listnode3 = concat(listnode3, listnode1)
-                                       if ppropdefnode2 != null then
-                                               listnode3.add(ppropdefnode2)
+                                       if pclassdefnode2 != null then
+                                               listnode3.add(pclassdefnode2)
                                        end
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction669
+private class ReduceAction985
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var psuperclassnode1 = nodearraylist1
-                                       if psuperclassnode1 != null then
-                                               listnode2.add(psuperclassnode1)
+                                       var pformaldefnode1 = nodearraylist1
+                                       if pformaldefnode1 != null then
+                                               listnode2.add(pformaldefnode1)
                                        end
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction670
+private class ReduceAction986
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11292,35 +10332,16 @@ private class ReduceAction670
                                        var listnode3 = new Array[Object]
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       var psuperclassnode2 = nodearraylist2
+                                       var pformaldefnode2 = nodearraylist2
                                        listnode3 = concat(listnode3, listnode1)
-                                       if psuperclassnode2 != null then
-                                               listnode3.add(psuperclassnode2)
+                                       if pformaldefnode2 != null then
+                                               listnode3.add(pformaldefnode2)
                                        end
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
-end
-private class ReduceAction673
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pformaldefnode1 = nodearraylist1
-                                       if pformaldefnode1 != null then
-                                               listnode2.add(pformaldefnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(_goto), node_list)
-       end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction674
+private class ReduceAction988
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11330,18 +10351,16 @@ private class ReduceAction674
                                        var listnode3 = new Array[Object]
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       var pformaldefnode2 = nodearraylist2
+                                       var ppropdefnode2 = nodearraylist2
                                        listnode3 = concat(listnode3, listnode1)
-                                       if pformaldefnode2 != null then
-                                               listnode3.add(pformaldefnode2)
+                                       if ppropdefnode2 != null then
+                                               listnode3.add(ppropdefnode2)
                                        end
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction675
+private class ReduceAction989
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11355,10 +10374,8 @@ private class ReduceAction675
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction676
+private class ReduceAction990
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11376,27 +10393,23 @@ private class ReduceAction676
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction677
+private class ReduceAction991
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var pclosuredeclnode1 = nodearraylist1
-                                       if pclosuredeclnode1 != null then
-                                               listnode2.add(pclosuredeclnode1)
+                                       var pexterncallnode1 = nodearraylist1
+                                       if pexterncallnode1 != null then
+                                               listnode2.add(pexterncallnode1)
                                        end
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction678
+private class ReduceAction992
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11406,18 +10419,16 @@ private class ReduceAction678
                                        var listnode3 = new Array[Object]
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       var pclosuredeclnode2 = nodearraylist2
+                                       var pexterncallnode2 = nodearraylist2
                                        listnode3 = concat(listnode3, listnode1)
-                                       if pclosuredeclnode2 != null then
-                                               listnode3.add(pclosuredeclnode2)
+                                       if pexterncallnode2 != null then
+                                               listnode3.add(pexterncallnode2)
                                        end
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction680
+private class ReduceAction994
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11435,10 +10446,8 @@ private class ReduceAction680
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction682
+private class ReduceAction996
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11456,10 +10465,8 @@ private class ReduceAction682
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction684
+private class ReduceAction1002
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11476,10 +10483,27 @@ private class ReduceAction684
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction688
+private class ReduceAction1004
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       var pannotationnode2 = nodearraylist2
+                                       listnode3 = concat(listnode3, listnode1)
+                                       if pannotationnode2 != null then
+                                               listnode3.add(pannotationnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction1012
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11497,10 +10521,8 @@ private class ReduceAction688
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction689
+private class ReduceAction1013
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11514,10 +10536,8 @@ private class ReduceAction689
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction690
+private class ReduceAction1014
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11535,10 +10555,8 @@ private class ReduceAction690
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction691
+private class ReduceAction1015
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11552,10 +10570,8 @@ private class ReduceAction691
                                        node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end
-private class ReduceAction692
+private class ReduceAction1016
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11573,6 +10589,4 @@ private class ReduceAction692
                                        node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
-       var _goto: Int
-       init(g: Int) do _goto = g
 end