parser: closure syntax use '!' instead of 'with'
[nit.git] / src / parser / parser.nit
index 3f668cf..dd8f14b 100644 (file)
@@ -1,8 +1,8 @@
 # Parser.
-# This file was generated by SableCC (http://www.sablecc.org/). 
+# This file was generated by SableCC (http://www.sablecc.org/).
 package parser
 
-import parser_prod
+intrude import parser_prod
 intrude import parser_tables
 
 # State of the parser automata as stored in the parser stack.
@@ -11,7 +11,7 @@ private class State
        readable writable var _state: Int
 
        # The node stored with the state in the stack
-       readable writable var _nodes: nullable Object 
+       readable writable var _nodes: nullable Object
 
        init(state: Int, nodes: nullable Object)
        do
@@ -102,10 +102,7 @@ special ParserTable
                var lexer = _lexer
                while true do
                        var token = lexer.peek
-                       var last_pos = token.pos
-                       var last_line = token.line
-
-                       if token isa PError then
+                       if token isa AError then
                                return new Start(null, token)
                        end
 
@@ -140,12 +137,12 @@ special ParserTable
                                var node2 = lexer.next
                                assert node2 isa EOF
                                var node1 = pop
-                               assert node1 isa PModule
+                               assert node1 isa AModule
                                var node = new Start(node1, node2)
-                               (new SearchTokensVisitor).visit(node)
+                               (new ComputeProdLocationVisitor).enter_visit(node)
                                return node
                        else if action_type == 3 then # ERROR
-                               var node2 = new PError.init_error(lexer.filename, last_line, last_pos, error_messages[errors[action_value]])
+                               var node2 = new AError.init_error("Syntax error: unexpected token.", token.location)
                                var node = new Start(null, node2)
                                return node
                        end
@@ -894,37 +891,127 @@ special ParserTable
                        new ReduceAction734,
                        new ReduceAction735,
                        new ReduceAction736,
-                       new ReduceAction737
+                       new ReduceAction737,
+                       new ReduceAction738,
+                       new ReduceAction739,
+                       new ReduceAction740,
+                       new ReduceAction741,
+                       new ReduceAction742,
+                       new ReduceAction743,
+                       new ReduceAction744,
+                       new ReduceAction745,
+                       new ReduceAction746,
+                       new ReduceAction747,
+                       new ReduceAction748,
+                       new ReduceAction749,
+                       new ReduceAction750,
+                       new ReduceAction751,
+                       new ReduceAction752,
+                       new ReduceAction753,
+                       new ReduceAction754,
+                       new ReduceAction755,
+                       new ReduceAction756,
+                       new ReduceAction757,
+                       new ReduceAction758
                )
        end
 end
 
-# Find first and last tokens of production nodes
-private class SearchTokensVisitor
+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
 special Visitor
-       var _untokenned_nodes: Array[Prod]
-       var _last_token: nullable Token = null
-       redef fun visit(n: nullable PNode)
+       # 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
-                       _last_token = n
-                       for no in _untokenned_nodes do
-                               no.first_token = n
+                       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
-                       _untokenned_nodes.clear
+                       _need_after_epsilons.clear
                else
                        assert n isa Prod
-                       _untokenned_nodes.add(n)
+                       _need_first_prods.add(n)
+
+                       var old_last = _last_location
+                       _last_location = null
                        n.visit_all(self)
-                       n.last_token = _last_token
+                       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
-               _untokenned_nodes = new Array[Prod]
-       end
+
+       init do end
 end
 
 # Each reduca action has its own class, this one is the root of the hierarchy.
@@ -958,7 +1045,7 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode4 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
@@ -1006,7 +1093,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -1063,7 +1150,7 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
 #                                      if listnode4 != null then
@@ -1131,7 +1218,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -1171,7 +1258,7 @@ special ReduceAction
                                        var listnode7 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa nullable PPropdef
+                                       assert ppropdefnode5 isa nullable APropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
@@ -1203,7 +1290,7 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa nullable PPropdef
+                                       assert ppropdefnode5 isa nullable APropdef
                                        var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
@@ -1243,10 +1330,10 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa nullable PPropdef
+                                       assert ppropdefnode5 isa nullable APropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
@@ -1278,10 +1365,10 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa nullable PPropdef
+                                       assert ppropdefnode5 isa nullable APropdef
                                        var listnode6 = nodearraylist4
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
@@ -1331,7 +1418,7 @@ special ReduceAction
 #                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
@@ -1373,7 +1460,7 @@ special ReduceAction
 #                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
@@ -1414,7 +1501,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -1426,7 +1513,7 @@ special ReduceAction
 #                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
@@ -1459,7 +1546,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -1471,7 +1558,7 @@ special ReduceAction
 #                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
@@ -1514,7 +1601,7 @@ special ReduceAction
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
@@ -1556,7 +1643,7 @@ special ReduceAction
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
@@ -1604,12 +1691,12 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
@@ -1649,12 +1736,12 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
@@ -1714,7 +1801,7 @@ special ReduceAction
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa nullable PPropdef
+                                       assert ppropdefnode7 isa nullable APropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
@@ -1766,7 +1853,7 @@ special ReduceAction
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa nullable PPropdef
+                                       assert ppropdefnode7 isa nullable APropdef
                                        var listnode8 = nodearraylist5
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
@@ -1815,7 +1902,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -1829,7 +1916,7 @@ special ReduceAction
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa nullable PPropdef
+                                       assert ppropdefnode7 isa nullable APropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
@@ -1870,7 +1957,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -1884,7 +1971,7 @@ special ReduceAction
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa nullable PPropdef
+                                       assert ppropdefnode7 isa nullable APropdef
                                        var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
@@ -1929,7 +2016,7 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var pclassdefnode4 = nodearraylist1
-                                       assert pclassdefnode4 isa nullable PClassdef
+                                       assert pclassdefnode4 isa nullable AClassdef
                                        if pclassdefnode4 != null then
                                                listnode5.add(pclassdefnode4)
                                        end
@@ -1953,9 +2040,9 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var pclassdefnode4 = nodearraylist2
-                                       assert pclassdefnode4 isa nullable PClassdef
+                                       assert pclassdefnode4 isa nullable AClassdef
                                        if pclassdefnode4 != null then
                                                listnode5.add(pclassdefnode4)
                                        end
@@ -1988,7 +2075,7 @@ special ReduceAction
                                                end
 #                                      end
                                        var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa nullable PClassdef
+                                       assert pclassdefnode5 isa nullable AClassdef
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
@@ -2013,7 +2100,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -2024,7 +2111,7 @@ special ReduceAction
                                                end
 #                                      end
                                        var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa nullable PClassdef
+                                       assert pclassdefnode5 isa nullable AClassdef
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
@@ -2050,7 +2137,7 @@ special ReduceAction
                                        var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa nullable PClassdef
+                                       assert pclassdefnode5 isa nullable AClassdef
 #                                      if listnode4 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode4
@@ -2082,11 +2169,11 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa nullable PClassdef
+                                       assert pclassdefnode5 isa nullable AClassdef
 #                                      if listnode4 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode4
@@ -2129,7 +2216,7 @@ special ReduceAction
                                        var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var pclassdefnode6 = nodearraylist3
-                                       assert pclassdefnode6 isa nullable PClassdef
+                                       assert pclassdefnode6 isa nullable AClassdef
 #                                      if listnode5 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode5
@@ -2162,7 +2249,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -2175,7 +2262,7 @@ special ReduceAction
                                        var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var pclassdefnode6 = nodearraylist4
-                                       assert pclassdefnode6 isa nullable PClassdef
+                                       assert pclassdefnode6 isa nullable AClassdef
 #                                      if listnode5 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode5
@@ -2208,7 +2295,7 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa nullable PPropdef
+                                       assert ppropdefnode5 isa nullable APropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
@@ -2216,7 +2303,7 @@ special ReduceAction
                                                listnode6
                                        )
                                        var pclassdefnode7 = nodearraylist3
-                                       assert pclassdefnode7 isa nullable PClassdef
+                                       assert pclassdefnode7 isa nullable AClassdef
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
@@ -2246,7 +2333,7 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa nullable PPropdef
+                                       assert ppropdefnode5 isa nullable APropdef
                                        var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
@@ -2263,7 +2350,7 @@ special ReduceAction
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa nullable PClassdef
+                                       assert pclassdefnode8 isa nullable AClassdef
                                        if pclassdefnode4 != null then
                                                listnode9.add(pclassdefnode4)
                                        end
@@ -2292,10 +2379,10 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa nullable PPropdef
+                                       assert ppropdefnode5 isa nullable APropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
@@ -2303,7 +2390,7 @@ special ReduceAction
                                                listnode6
                                        )
                                        var pclassdefnode7 = nodearraylist4
-                                       assert pclassdefnode7 isa nullable PClassdef
+                                       assert pclassdefnode7 isa nullable AClassdef
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
@@ -2333,10 +2420,10 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa nullable PPropdef
+                                       assert ppropdefnode5 isa nullable APropdef
                                        var listnode6 = nodearraylist4
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
@@ -2353,7 +2440,7 @@ special ReduceAction
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa nullable PClassdef
+                                       assert pclassdefnode8 isa nullable AClassdef
                                        if pclassdefnode4 != null then
                                                listnode9.add(pclassdefnode4)
                                        end
@@ -2392,7 +2479,7 @@ special ReduceAction
 #                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
@@ -2400,7 +2487,7 @@ special ReduceAction
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa nullable PClassdef
+                                       assert pclassdefnode8 isa nullable AClassdef
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
@@ -2440,7 +2527,7 @@ special ReduceAction
 #                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
@@ -2457,7 +2544,7 @@ special ReduceAction
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa nullable PClassdef
+                                       assert pclassdefnode9 isa nullable AClassdef
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
@@ -2487,7 +2574,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -2499,7 +2586,7 @@ special ReduceAction
 #                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
@@ -2507,7 +2594,7 @@ special ReduceAction
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa nullable PClassdef
+                                       assert pclassdefnode8 isa nullable AClassdef
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
@@ -2538,7 +2625,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -2550,7 +2637,7 @@ special ReduceAction
 #                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
@@ -2567,7 +2654,7 @@ special ReduceAction
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa nullable PClassdef
+                                       assert pclassdefnode9 isa nullable AClassdef
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
@@ -2599,7 +2686,7 @@ special ReduceAction
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
@@ -2607,7 +2694,7 @@ special ReduceAction
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa nullable PClassdef
+                                       assert pclassdefnode8 isa nullable AClassdef
 #                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
@@ -2647,7 +2734,7 @@ special ReduceAction
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
@@ -2664,7 +2751,7 @@ special ReduceAction
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa nullable PClassdef
+                                       assert pclassdefnode9 isa nullable AClassdef
 #                                      if listnode4 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode4
@@ -2701,12 +2788,12 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
@@ -2714,7 +2801,7 @@ special ReduceAction
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa nullable PClassdef
+                                       assert pclassdefnode8 isa nullable AClassdef
 #                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
@@ -2752,12 +2839,12 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa nullable PPropdef
+                                       assert ppropdefnode6 isa nullable APropdef
                                        var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
@@ -2774,7 +2861,7 @@ special ReduceAction
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa nullable PClassdef
+                                       assert pclassdefnode9 isa nullable AClassdef
 #                                      if listnode4 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode4
@@ -2823,7 +2910,7 @@ special ReduceAction
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa nullable PPropdef
+                                       assert ppropdefnode7 isa nullable APropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
@@ -2831,7 +2918,7 @@ special ReduceAction
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa nullable PClassdef
+                                       assert pclassdefnode9 isa nullable AClassdef
 #                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
@@ -2881,7 +2968,7 @@ special ReduceAction
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa nullable PPropdef
+                                       assert ppropdefnode7 isa nullable APropdef
                                        var listnode8 = nodearraylist5
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
@@ -2898,7 +2985,7 @@ special ReduceAction
                                                listnode9
                                        )
                                        var pclassdefnode10 = nodearraylist6
-                                       assert pclassdefnode10 isa nullable PClassdef
+                                       assert pclassdefnode10 isa nullable AClassdef
 #                                      if listnode5 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode5
@@ -2936,7 +3023,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -2950,7 +3037,7 @@ special ReduceAction
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa nullable PPropdef
+                                       assert ppropdefnode7 isa nullable APropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
@@ -2958,7 +3045,7 @@ special ReduceAction
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa nullable PClassdef
+                                       assert pclassdefnode9 isa nullable AClassdef
 #                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
@@ -2997,7 +3084,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable APackagedecl
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -3011,7 +3098,7 @@ special ReduceAction
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa nullable PPropdef
+                                       assert ppropdefnode7 isa nullable APropdef
                                        var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
@@ -3028,7 +3115,7 @@ special ReduceAction
                                                listnode9
                                        )
                                        var pclassdefnode10 = nodearraylist7
-                                       assert pclassdefnode10 isa nullable PClassdef
+                                       assert pclassdefnode10 isa nullable AClassdef
 #                                      if listnode5 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode5
@@ -3063,7 +3150,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwpackagenode3 = nodearraylist2
                                        assert tkwpackagenode3 isa nullable TKwpackage
                                        var tidnode4 = nodearraylist4
@@ -3090,12 +3177,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa nullable PVisibility
+                                       assert pvisibilitynode2 isa nullable AVisibility
                                        var tkwimportnode3 = nodearraylist3
                                        assert tkwimportnode3 isa nullable TKwimport
                                        var tidnode4 = nodearraylist5
                                        assert tidnode4 isa nullable TId
-                                       var pimportnode1: nullable AImport = new AImport.init_aimport(
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
                                                pvisibilitynode2,
                                                tkwimportnode3,
                                                tidnode4
@@ -3117,7 +3204,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa nullable PVisibility
+                                       assert pvisibilitynode2 isa nullable AVisibility
                                        var tkwimportnode3 = nodearraylist3
                                        assert tkwimportnode3 isa nullable TKwimport
                                        var tkwendnode4 = nodearraylist5
@@ -3140,7 +3227,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var ppropdefnode2 = nodearraylist1
-                                       assert ppropdefnode2 isa nullable PPropdef
+                                       assert ppropdefnode2 isa nullable APropdef
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        end
@@ -3173,7 +3260,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable PExpr
+                                       assert pexprnode4 isa nullable AExpr
                                        if pexprnode4 != null then
                                                listnode5.add(pexprnode4)
                                        end
@@ -3200,7 +3287,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable PExpr
+                                       assert pexprnode4 isa nullable AExpr
                                        var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        if pexprnode4 != null then
@@ -3241,14 +3328,14 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3280,16 +3367,16 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3321,11 +3408,11 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist6
@@ -3337,7 +3424,7 @@ special ReduceAction
                                                        listnode8.append(listnode7)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3370,13 +3457,13 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist7
@@ -3388,7 +3475,7 @@ special ReduceAction
                                                        listnode8.append(listnode7)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3420,11 +3507,11 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode8 = nodearraylist6
@@ -3436,7 +3523,7 @@ special ReduceAction
                                                        listnode9.append(listnode8)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3469,13 +3556,13 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode8 = nodearraylist7
@@ -3487,7 +3574,7 @@ special ReduceAction
                                                        listnode9.append(listnode8)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3520,11 +3607,11 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist6
@@ -3545,7 +3632,7 @@ special ReduceAction
                                                        listnode10.append(listnode9)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3579,13 +3666,13 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist7
@@ -3606,7 +3693,7 @@ special ReduceAction
                                                        listnode10.append(listnode9)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3639,19 +3726,19 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist6
-                                       assert ppropdefnode9 isa nullable PPropdef
+                                       assert ppropdefnode9 isa nullable APropdef
                                        if ppropdefnode9 != null then
                                                listnode10.add(ppropdefnode9)
                                        end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3685,15 +3772,15 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist6
-                                       assert ppropdefnode9 isa nullable PPropdef
+                                       assert ppropdefnode9 isa nullable APropdef
                                        var listnode10 = nodearraylist8
                                        assert listnode10 isa Array[Object]
                                        if ppropdefnode9 != null then
@@ -3706,7 +3793,7 @@ special ReduceAction
                                                        listnode11.append(listnode10)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3740,21 +3827,21 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist7
-                                       assert ppropdefnode9 isa nullable PPropdef
+                                       assert ppropdefnode9 isa nullable APropdef
                                        if ppropdefnode9 != null then
                                                listnode10.add(ppropdefnode9)
                                        end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3789,17 +3876,17 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist7
-                                       assert ppropdefnode9 isa nullable PPropdef
+                                       assert ppropdefnode9 isa nullable APropdef
                                        var listnode10 = nodearraylist9
                                        assert listnode10 isa Array[Object]
                                        if ppropdefnode9 != null then
@@ -3812,7 +3899,7 @@ special ReduceAction
                                                        listnode11.append(listnode10)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3846,11 +3933,11 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist6
@@ -3863,11 +3950,11 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa nullable PPropdef
+                                       assert ppropdefnode10 isa nullable APropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3902,11 +3989,11 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist6
@@ -3919,7 +4006,7 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa nullable PPropdef
+                                       assert ppropdefnode10 isa nullable APropdef
                                        var listnode11 = nodearraylist9
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
@@ -3932,7 +4019,7 @@ special ReduceAction
                                                        listnode12.append(listnode11)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3967,13 +4054,13 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist7
@@ -3986,11 +4073,11 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa nullable PPropdef
+                                       assert ppropdefnode10 isa nullable APropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4026,13 +4113,13 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist7
@@ -4045,7 +4132,7 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa nullable PPropdef
+                                       assert ppropdefnode10 isa nullable APropdef
                                        var listnode11 = nodearraylist10
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
@@ -4058,7 +4145,7 @@ special ReduceAction
                                                        listnode12.append(listnode11)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4092,11 +4179,11 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode8 = nodearraylist6
@@ -4109,11 +4196,11 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa nullable PPropdef
+                                       assert ppropdefnode10 isa nullable APropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4148,11 +4235,11 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode8 = nodearraylist6
@@ -4165,7 +4252,7 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa nullable PPropdef
+                                       assert ppropdefnode10 isa nullable APropdef
                                        var listnode11 = nodearraylist9
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
@@ -4178,7 +4265,7 @@ special ReduceAction
                                                        listnode12.append(listnode11)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4213,13 +4300,13 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode8 = nodearraylist7
@@ -4232,11 +4319,11 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa nullable PPropdef
+                                       assert ppropdefnode10 isa nullable APropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4272,13 +4359,13 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode8 = nodearraylist7
@@ -4291,7 +4378,7 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa nullable PPropdef
+                                       assert ppropdefnode10 isa nullable APropdef
                                        var listnode11 = nodearraylist10
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
@@ -4304,7 +4391,7 @@ special ReduceAction
                                                        listnode12.append(listnode11)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4339,11 +4426,11 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist6
@@ -4365,11 +4452,11 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode11 = nodearraylist8
-                                       assert ppropdefnode11 isa nullable PPropdef
+                                       assert ppropdefnode11 isa nullable APropdef
                                        if ppropdefnode11 != null then
                                                listnode12.add(ppropdefnode11)
                                        end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4405,11 +4492,11 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist6
@@ -4431,7 +4518,7 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode11 = nodearraylist8
-                                       assert ppropdefnode11 isa nullable PPropdef
+                                       assert ppropdefnode11 isa nullable APropdef
                                        var listnode12 = nodearraylist10
                                        assert listnode12 isa Array[Object]
                                        if ppropdefnode11 != null then
@@ -4444,7 +4531,7 @@ special ReduceAction
                                                        listnode13.append(listnode12)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4480,13 +4567,13 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist7
@@ -4508,11 +4595,11 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode11 = nodearraylist9
-                                       assert ppropdefnode11 isa nullable PPropdef
+                                       assert ppropdefnode11 isa nullable APropdef
                                        if ppropdefnode11 != null then
                                                listnode12.add(ppropdefnode11)
                                        end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4549,13 +4636,13 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable PClasskind
+                                       assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        var listnode7 = nodearraylist7
@@ -4577,7 +4664,7 @@ special ReduceAction
                                                end
 #                                      end
                                        var ppropdefnode11 = nodearraylist9
-                                       assert ppropdefnode11 isa nullable PPropdef
+                                       assert ppropdefnode11 isa nullable APropdef
                                        var listnode12 = nodearraylist11
                                        assert listnode12 isa Array[Object]
                                        if ppropdefnode11 != null then
@@ -4590,7 +4677,7 @@ special ReduceAction
                                                        listnode13.append(listnode12)
                                                end
 #                                      end
-                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4685,7 +4772,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa nullable PFormaldef
+                                       assert pformaldefnode1 isa nullable AFormaldef
                                        if pformaldefnode1 != null then
                                                listnode2.add(pformaldefnode1)
                                        end
@@ -4707,7 +4794,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa nullable PFormaldef
+                                       assert pformaldefnode1 isa nullable AFormaldef
                                        var listnode2 = nodearraylist4
                                        assert listnode2 isa Array[Object]
                                        if pformaldefnode1 != null then
@@ -4734,7 +4821,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa nullable PFormaldef
+                                       assert pformaldefnode1 isa nullable AFormaldef
                                        node_list = pformaldefnode1
                                        p.push(p.go_to(8), node_list)
        end
@@ -4767,7 +4854,7 @@ special ReduceAction
                                        var tclassidnode2 = nodearraylist1
                                        assert tclassidnode2 isa nullable TClassid
                                        var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable PType
+                                       assert ptypenode3 isa nullable AType
                                        var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
                                                tclassidnode2,
                                                ptypenode3
@@ -4789,7 +4876,7 @@ special ReduceAction
                                        var tkwspecialnode2 = nodearraylist2
                                        assert tkwspecialnode2 isa nullable TKwspecial
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa nullable PType
+                                       assert ptypenode3 isa nullable AType
                                        var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
                                                tkwspecialnode2,
                                                ptypenode3
@@ -4807,7 +4894,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa nullable PPropdef
+                                       assert ppropdefnode1 isa nullable APropdef
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(11), node_list)
        end
@@ -4826,17 +4913,17 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable PExpr
+                                       assert pexprnode8 isa nullable AExpr
                                        var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                null,
@@ -4865,19 +4952,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable PExpr
+                                       assert pexprnode8 isa nullable AExpr
                                        var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -4906,17 +4993,17 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable PExpr
+                                       assert pexprnode8 isa nullable AExpr
                                        var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                null,
@@ -4946,19 +5033,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable PExpr
+                                       assert pexprnode8 isa nullable AExpr
                                        var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -4986,15 +5073,15 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
                                                null,
@@ -5022,17 +5109,17 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -5059,15 +5146,15 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
                                                pdocnode2,
                                                null,
@@ -5095,17 +5182,17 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -5132,15 +5219,15 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
@@ -5169,17 +5256,17 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -5208,15 +5295,15 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var tstringnode8 = nodearraylist8
                                        assert tstringnode8 isa nullable TString
                                        var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
@@ -5248,17 +5335,17 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       assert pvisibilitynode4 isa nullable AVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
+                                       assert pmethidnode6 isa nullable AMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
+                                       assert psignaturenode7 isa nullable ASignature
                                        var tstringnode8 = nodearraylist9
                                        assert tstringnode8 isa nullable TString
                                        var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
@@ -5287,7 +5374,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -5301,20 +5388,19 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa nullable TAttrid
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist5
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist6
+                                       assert tattridnode12 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
                                                null
                                        )
@@ -5336,7 +5422,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -5352,20 +5438,19 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
                                                null
                                        )
@@ -5385,7 +5470,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -5393,20 +5478,19 @@ special ReduceAction
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist4
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist5
+                                       assert tattridnode10 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
                                                null
                                        )
@@ -5428,7 +5512,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -5444,20 +5528,19 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
                                                null
                                        )
@@ -5480,7 +5563,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -5498,20 +5581,19 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
                                                null
                                        )
@@ -5532,7 +5614,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -5542,20 +5624,19 @@ special ReduceAction
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
                                                null
                                        )
@@ -5575,7 +5656,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwwritablenode6 = nodearraylist2
                                        assert tkwwritablenode6 isa nullable TKwwritable
                                        var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
@@ -5583,20 +5664,19 @@ special ReduceAction
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist4
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist5
+                                       assert tattridnode10 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
                                                null
                                        )
@@ -5617,7 +5697,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
@@ -5627,20 +5707,19 @@ special ReduceAction
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
                                                null
                                        )
@@ -5659,22 +5738,21 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa nullable TKwattr
-                                       var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa nullable TAttrid
+                                       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,
-                                               tkwattrnode7,
-                                               null,
-                                               tattridnode9,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null
                                        )
@@ -5696,7 +5774,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -5712,20 +5790,19 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist4
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
                                                null
                                        )
@@ -5748,7 +5825,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -5766,20 +5843,19 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist5
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
                                                null
                                        )
@@ -5800,7 +5876,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -5810,20 +5886,19 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist3
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
                                                null
                                        )
@@ -5846,7 +5921,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -5864,20 +5939,19 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist5
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
                                                null
                                        )
@@ -5901,7 +5975,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -5921,20 +5995,19 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist6
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa nullable TAttrid
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist8
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist9
+                                       assert tattridnode12 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
                                                null
                                        )
@@ -5956,7 +6029,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -5968,20 +6041,19 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist4
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist6
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist7
+                                       assert tattridnode10 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
                                                null
                                        )
@@ -6002,7 +6074,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwwritablenode6 = nodearraylist2
                                        assert tkwwritablenode6 isa nullable TKwwritable
                                        var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
@@ -6012,20 +6084,19 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist3
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
                                                null
                                        )
@@ -6047,7 +6118,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
@@ -6059,20 +6130,19 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist4
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist6
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist7
+                                       assert tattridnode10 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
                                                null
                                        )
@@ -6092,24 +6162,23 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa nullable TKwattr
-                                       var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa nullable TAttrid
+                                       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,
-                                               tkwattrnode7,
-                                               null,
-                                               tattridnode9,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null
                                        )
@@ -6131,7 +6200,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -6145,23 +6214,22 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa nullable PType
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist5
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist6
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist7
+                                       assert ptypenode13 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6183,7 +6251,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -6199,23 +6267,22 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist8
+                                       assert ptypenode13 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6235,7 +6302,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -6243,23 +6310,22 @@ special ReduceAction
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa nullable PType
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist4
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist5
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist6
+                                       assert ptypenode11 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6281,7 +6347,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -6297,23 +6363,22 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist8
+                                       assert ptypenode13 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6336,7 +6401,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -6354,23 +6419,22 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist9
+                                       assert ptypenode13 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6391,7 +6455,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -6401,23 +6465,22 @@ special ReduceAction
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist7
+                                       assert ptypenode11 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6437,7 +6500,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwwritablenode6 = nodearraylist2
                                        assert tkwwritablenode6 isa nullable TKwwritable
                                        var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
@@ -6445,23 +6508,22 @@ special ReduceAction
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa nullable PType
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist4
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist5
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist6
+                                       assert ptypenode11 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6482,7 +6544,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
@@ -6492,23 +6554,22 @@ special ReduceAction
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist7
+                                       assert ptypenode11 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6527,25 +6588,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa nullable TKwattr
-                                       var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable PType
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist4
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode9 = nodearraylist5
+                                       assert ptypenode9 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
                                                null,
                                                pvisibilitynode6,
-                                               tkwattrnode7,
-                                               null,
-                                               tattridnode9,
-                                               ptypenode10,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               ptypenode9,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6567,7 +6627,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -6583,23 +6643,22 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist4
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist8
+                                       assert ptypenode13 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6622,7 +6681,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -6640,23 +6699,22 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist5
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist9
+                                       assert ptypenode13 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6677,7 +6735,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -6687,23 +6745,22 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist3
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist7
+                                       assert ptypenode11 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6726,7 +6783,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -6744,23 +6801,22 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist5
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist9
+                                       assert ptypenode13 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6784,7 +6840,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -6804,23 +6860,22 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist6
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa nullable PType
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist8
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist9
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist10
+                                       assert ptypenode13 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6842,7 +6897,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -6854,23 +6909,22 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist4
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa nullable PType
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist6
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist7
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist8
+                                       assert ptypenode11 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6891,7 +6945,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwwritablenode6 = nodearraylist2
                                        assert tkwwritablenode6 isa nullable TKwwritable
                                        var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
@@ -6901,23 +6955,22 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist3
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist7
+                                       assert ptypenode11 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6939,7 +6992,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
@@ -6951,23 +7004,22 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist4
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa nullable PType
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist6
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist7
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist8
+                                       assert ptypenode11 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6987,27 +7039,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa nullable TKwattr
-                                       var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable PType
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode9 = nodearraylist6
+                                       assert ptypenode9 isa nullable AType
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
                                                tkwredefnode5,
                                                pvisibilitynode6,
-                                               tkwattrnode7,
-                                               null,
-                                               tattridnode9,
-                                               ptypenode10,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               ptypenode9,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -7030,7 +7081,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -7044,24 +7095,23 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist9
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist5
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist6
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var pexprnode14 = nodearraylist9
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
-                                               pexprnode15
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7084,7 +7134,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -7100,24 +7150,23 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var pexprnode14 = nodearraylist10
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7138,7 +7187,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -7146,24 +7195,23 @@ special ReduceAction
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist4
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist5
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
-                                               pexprnode13
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7186,7 +7234,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -7202,24 +7250,23 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var pexprnode14 = nodearraylist10
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7243,7 +7290,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -7261,24 +7308,23 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var pexprnode14 = nodearraylist11
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
-                                               pexprnode15
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7300,7 +7346,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -7310,24 +7356,23 @@ special ReduceAction
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7348,7 +7393,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwwritablenode6 = nodearraylist2
                                        assert tkwwritablenode6 isa nullable TKwwritable
                                        var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
@@ -7356,24 +7401,23 @@ special ReduceAction
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist4
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist5
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
-                                               pexprnode13
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7395,7 +7439,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
@@ -7405,24 +7449,23 @@ special ReduceAction
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7442,26 +7485,25 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa nullable TKwattr
-                                       var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa nullable PExpr
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist4
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode10 = nodearraylist7
+                                       assert pexprnode10 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
                                                null,
                                                pvisibilitynode6,
-                                               tkwattrnode7,
-                                               null,
-                                               tattridnode9,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
-                                               pexprnode11
+                                               pexprnode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7484,7 +7526,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -7500,24 +7542,23 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist4
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var pexprnode14 = nodearraylist10
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7541,7 +7582,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -7559,24 +7600,23 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist5
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var pexprnode14 = nodearraylist11
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
-                                               pexprnode15
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7598,7 +7638,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -7608,24 +7648,23 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist3
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7649,7 +7688,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -7667,24 +7706,23 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist5
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var pexprnode14 = nodearraylist11
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
-                                               pexprnode15
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7709,7 +7747,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -7729,24 +7767,23 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist6
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist8
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist9
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var pexprnode14 = nodearraylist12
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
+                                               tkwvarnode11,
+                                               tattridnode12,
                                                null,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7769,7 +7806,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -7781,24 +7818,23 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist4
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist6
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist7
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
-                                               pexprnode13
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7820,7 +7856,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwwritablenode6 = nodearraylist2
                                        assert tkwwritablenode6 isa nullable TKwwritable
                                        var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
@@ -7830,24 +7866,23 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist3
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7870,7 +7905,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
@@ -7882,24 +7917,23 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist4
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist6
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist7
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
+                                               tkwvarnode9,
+                                               tattridnode10,
                                                null,
-                                               pexprnode13
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7920,28 +7954,27 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa nullable TKwattr
-                                       var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable PExpr
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
                                                tkwredefnode5,
                                                pvisibilitynode6,
-                                               tkwattrnode7,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
-                                               tattridnode9,
-                                               null,
-                                               pexprnode11
+                                               pexprnode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -7964,7 +7997,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -7978,26 +8011,25 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist5
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist6
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist7
+                                       assert ptypenode13 isa nullable AType
+                                       var pexprnode14 = nodearraylist10
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8021,7 +8053,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -8037,26 +8069,25 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist8
+                                       assert ptypenode13 isa nullable AType
+                                       var pexprnode14 = nodearraylist11
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8078,7 +8109,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -8086,26 +8117,25 @@ special ReduceAction
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist4
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist5
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist6
+                                       assert ptypenode11 isa nullable AType
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8129,7 +8159,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -8145,26 +8175,25 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist8
+                                       assert ptypenode13 isa nullable AType
+                                       var pexprnode14 = nodearraylist11
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8189,7 +8218,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -8207,26 +8236,25 @@ special ReduceAction
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist9
+                                       assert ptypenode13 isa nullable AType
+                                       var pexprnode14 = nodearraylist12
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                null,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8249,7 +8277,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -8259,26 +8287,25 @@ special ReduceAction
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist7
+                                       assert ptypenode11 isa nullable AType
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8300,7 +8327,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwwritablenode6 = nodearraylist2
                                        assert tkwwritablenode6 isa nullable TKwwritable
                                        var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
@@ -8308,26 +8335,25 @@ special ReduceAction
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist4
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist5
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist6
+                                       assert ptypenode11 isa nullable AType
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8350,7 +8376,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
@@ -8360,26 +8386,25 @@ special ReduceAction
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist7
+                                       assert ptypenode11 isa nullable AType
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                null,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8400,28 +8425,27 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa nullable TKwattr
-                                       var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable PType
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable PExpr
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist4
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode9 = nodearraylist5
+                                       assert ptypenode9 isa nullable AType
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
                                                null,
                                                pvisibilitynode6,
-                                               tkwattrnode7,
-                                               null,
-                                               tattridnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               ptypenode9,
+                                               pexprnode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8445,7 +8469,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -8461,26 +8485,25 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist4
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist6
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist7
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist8
+                                       assert ptypenode13 isa nullable AType
+                                       var pexprnode14 = nodearraylist11
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8505,7 +8528,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -8523,26 +8546,25 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist5
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist9
+                                       assert ptypenode13 isa nullable AType
+                                       var pexprnode14 = nodearraylist12
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8565,7 +8587,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa nullable TKwreadable
                                        var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
@@ -8575,26 +8597,25 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist3
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist7
+                                       assert ptypenode11 isa nullable AType
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8619,7 +8640,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -8637,26 +8658,25 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist5
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist7
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist8
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist9
+                                       assert ptypenode13 isa nullable AType
+                                       var pexprnode14 = nodearraylist12
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8682,7 +8702,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -8702,26 +8722,25 @@ special ReduceAction
                                        var tkwredefnode9 = nodearraylist6
                                        assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa nullable TKwattr
-                                       var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist13
-                                       assert pexprnode15 isa nullable PExpr
+                                       assert pvisibilitynode10 isa nullable AVisibility
+                                       var tkwvarnode11 = nodearraylist8
+                                       assert tkwvarnode11 isa nullable TKwvar
+                                       var tattridnode12 = nodearraylist9
+                                       assert tattridnode12 isa nullable TAttrid
+                                       var ptypenode13 = nodearraylist10
+                                       assert ptypenode13 isa nullable AType
+                                       var pexprnode14 = nodearraylist13
+                                       assert pexprnode14 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
                                                tkwredefnode9,
                                                pvisibilitynode10,
-                                               tkwattrnode11,
-                                               null,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tkwvarnode11,
+                                               tattridnode12,
+                                               ptypenode13,
+                                               pexprnode14
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8745,7 +8764,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode4 = nodearraylist2
                                        assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
@@ -8757,26 +8776,25 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist4
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist6
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist7
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist8
+                                       assert ptypenode11 isa nullable AType
+                                       var pexprnode12 = nodearraylist11
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8799,7 +8817,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwwritablenode6 = nodearraylist2
                                        assert tkwwritablenode6 isa nullable TKwwritable
                                        var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
@@ -8809,26 +8827,25 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist3
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist5
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist6
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist7
+                                       assert ptypenode11 isa nullable AType
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8852,7 +8869,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
@@ -8864,26 +8881,25 @@ special ReduceAction
                                        var tkwredefnode7 = nodearraylist4
                                        assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa nullable TKwattr
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa nullable PExpr
+                                       assert pvisibilitynode8 isa nullable AVisibility
+                                       var tkwvarnode9 = nodearraylist6
+                                       assert tkwvarnode9 isa nullable TKwvar
+                                       var tattridnode10 = nodearraylist7
+                                       assert tattridnode10 isa nullable TAttrid
+                                       var ptypenode11 = nodearraylist8
+                                       assert ptypenode11 isa nullable AType
+                                       var pexprnode12 = nodearraylist11
+                                       assert pexprnode12 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
                                                tkwredefnode7,
                                                pvisibilitynode8,
-                                               tkwattrnode9,
-                                               null,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwvarnode9,
+                                               tattridnode10,
+                                               ptypenode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8905,30 +8921,29 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
+                                       assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa nullable TKwattr
-                                       var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable PType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable PExpr
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode9 = nodearraylist6
+                                       assert ptypenode9 isa nullable AType
+                                       var pexprnode10 = nodearraylist9
+                                       assert pexprnode10 isa nullable AExpr
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
                                                tkwredefnode5,
                                                pvisibilitynode6,
-                                               tkwattrnode7,
-                                               null,
-                                               tattridnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               ptypenode9,
+                                               pexprnode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8947,36 +8962,23 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
                                                null,
-                                               tkwvarnode12,
-                                               tattridnode13,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
                                                null,
-                                               null
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -8996,38 +8998,25 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
                                                null,
-                                               null
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -9039,36 +9028,33 @@ special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               null,
                                                null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -9080,6 +9066,7 @@ special 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
@@ -9088,45 +9075,70 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
+                                       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
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction178
+special 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,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
                                                null,
-                                               tkwvarnode12,
-                                               tattridnode13,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
                                                null,
-                                               null
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction178
+private class ReduceAction179
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -9140,51 +9152,38 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
                                                null,
-                                               null
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction179
+private class ReduceAction180
 special 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
@@ -9192,1349 +9191,568 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               null,
                                                null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction180
+private class ReduceAction181
 special 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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               null
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction181
+private class ReduceAction182
 special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction182
+private class ReduceAction183
 special 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 PDoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa nullable TKwvar
-                                       var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               null,
-                                               tkwvarnode8,
-                                               tattridnode9,
-                                               null,
-                                               null
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction183
+private class ReduceAction184
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               null
+                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(13), node_list)
        end
 init do end
 end
-private class ReduceAction184
+private class ReduceAction185
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               null
+                                       var tkwprivatenode2 = nodearraylist1
+                                       assert tkwprivatenode2 isa nullable TKwprivate
+                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(13), node_list)
        end
 init do end
 end
-private class ReduceAction185
+private class ReduceAction186
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               null
+                                       var tkwprotectednode2 = nodearraylist1
+                                       assert tkwprotectednode2 isa nullable TKwprotected
+                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(13), node_list)
        end
 init do end
 end
-private class ReduceAction186
+private class ReduceAction187
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               null
+                                       var tkwintrudenode2 = nodearraylist1
+                                       assert tkwintrudenode2 isa nullable TKwintrude
+                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(13), node_list)
        end
 init do end
 end
-private class ReduceAction187
+private class ReduceAction188
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               null
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
+                                               tidnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction188
+private class ReduceAction189
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               null
+                                       var tplusnode2 = nodearraylist1
+                                       assert tplusnode2 isa nullable TPlus
+                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
+                                               tplusnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction189
+private class ReduceAction190
 special 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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               null
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa nullable TMinus
+                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
+                                               tminusnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction190
+private class ReduceAction191
 special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               null
+                                       var tstarnode2 = nodearraylist1
+                                       assert tstarnode2 isa nullable TStar
+                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
+                                               tstarnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction191
+private class ReduceAction192
 special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa nullable TKwvar
-                                       var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               null,
-                                               tkwvarnode8,
-                                               tattridnode9,
-                                               null,
-                                               null
+                                       var tslashnode2 = nodearraylist1
+                                       assert tslashnode2 isa nullable TSlash
+                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
+                                               tslashnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction192
+private class ReduceAction193
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               null
+                                       var tpercentnode2 = nodearraylist1
+                                       assert tpercentnode2 isa nullable TPercent
+                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
+                                               tpercentnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction193
+private class ReduceAction194
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               null
+                                       var teqnode2 = nodearraylist1
+                                       assert teqnode2 isa nullable TEq
+                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
+                                               teqnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction194
+private class ReduceAction195
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               null
+                                       var tnenode2 = nodearraylist1
+                                       assert tnenode2 isa nullable TNe
+                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
+                                               tnenode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction195
+private class ReduceAction196
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               null
+                                       var tlenode2 = nodearraylist1
+                                       assert tlenode2 isa nullable TLe
+                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
+                                               tlenode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction196
+private class ReduceAction197
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               null
+                                       var tgenode2 = nodearraylist1
+                                       assert tgenode2 isa nullable TGe
+                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
+                                               tgenode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction197
+private class ReduceAction198
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               null
+                                       var tltnode2 = nodearraylist1
+                                       assert tltnode2 isa nullable TLt
+                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
+                                               tltnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction198
+private class ReduceAction199
 special 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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               null
+                                       var tgtnode2 = nodearraylist1
+                                       assert tgtnode2 isa nullable TGt
+                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
+                                               tgtnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction199
+private class ReduceAction200
 special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               null
+                                       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
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction200
+private class ReduceAction201
 special 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 PDoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa nullable TKwvar
-                                       var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               null,
-                                               tkwvarnode8,
-                                               tattridnode9,
-                                               ptypenode10,
-                                               null
+                                       var tstarshipnode2 = nodearraylist1
+                                       assert tstarshipnode2 isa nullable TStarship
+                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
+                                               tstarshipnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction201
+private class ReduceAction202
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               null
+                                       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
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction202
+private class ReduceAction203
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               null
+                                       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
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction203
+private class ReduceAction204
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
+                                       var listnode2 = new Array[Object]
+                                       var listnode5 = new Array[Object]
+                                       var listnode4 = nodearraylist1
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode2,
                                                null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               null
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
-private class ReduceAction204
+private class ReduceAction205
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       var listnode5 = nodearraylist2
+                                       assert listnode5 isa Array[Object]
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode3,
                                                null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               null
+                                               listnode6
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
-private class ReduceAction205
+private class ReduceAction206
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction206
-special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               null
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode2,
+                                               ptypenode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
@@ -10543,45 +9761,38 @@ special 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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               null
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       var ptypenode4 = nodearraylist2
+                                       assert ptypenode4 isa nullable AType
+                                       var listnode5 = nodearraylist3
+                                       assert listnode5 isa Array[Object]
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode3,
+                                               ptypenode4,
+                                               listnode6
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
@@ -10590,48 +9801,16 @@ special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
+                                       var listnode2 = new Array[Object]
+                                       var listnode4 = new Array[Object]
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode2,
                                                null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               null
+                                               listnode4
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
@@ -10640,38 +9819,26 @@ special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa nullable TKwvar
-                                       var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable PType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
+                                       var listnode3 = new Array[Object]
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode3,
                                                null,
-                                               tkwvarnode8,
-                                               tattridnode9,
-                                               ptypenode10,
-                                               null
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
@@ -10680,51 +9847,19 @@ special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist9
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
+                                       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
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
@@ -10733,54 +9868,29 @@ special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
+                                       var listnode3 = new Array[Object]
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       var ptypenode4 = nodearraylist2
+                                       assert ptypenode4 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode3,
+                                               ptypenode4,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
@@ -10789,44 +9899,15 @@ special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
+                                       var listnode2 = new Array[Object]
+                                       var listnode4 = new Array[Object]
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode2,
                                                null,
-                                               pexprnode13
+                                               listnode4
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(16), node_list)
        end
 init do end
 end
@@ -10835,54 +9916,25 @@ special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
+                                       var listnode3 = new Array[Object]
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode3,
                                                null,
-                                               pexprnode15
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(16), node_list)
        end
 init do end
 end
@@ -10891,57 +9943,18 @@ special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
+                                       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
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(16), node_list)
        end
 init do end
 end
@@ -10950,47 +9963,28 @@ special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
+                                       var listnode3 = new Array[Object]
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       var ptypenode4 = nodearraylist2
+                                       assert ptypenode4 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               listnode3,
+                                               ptypenode4,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(16), node_list)
        end
 init do end
 end
@@ -10999,44 +9993,19 @@ special 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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pparamnode1 = nodearraylist3
+                                       assert pparamnode1 isa nullable AParam
+                                       if pparamnode1 != null then
+                                               listnode2.add(pparamnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(17), node_list)
        end
 init do end
 end
@@ -11045,47 +10014,29 @@ special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pparamnode1 = nodearraylist3
+                                       assert pparamnode1 isa nullable AParam
+                                       var listnode2 = nodearraylist4
+                                       assert listnode2 isa Array[Object]
+                                       if pparamnode1 != null then
+                                               listnode3.add(pparamnode1)
+                                       end
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       node_list = listnode3
+                                       p.push(p.go_to(17), node_list)
        end
 init do end
 end
@@ -11094,37 +10045,12 @@ special 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 PDoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa nullable TKwvar
-                                       var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               null,
-                                               tkwvarnode8,
-                                               tattridnode9,
-                                               null,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(17), node_list)
        end
 init do end
 end
@@ -11133,54 +10059,13 @@ special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pparamnode1 = nodearraylist3
+                                       assert pparamnode1 isa nullable AParam
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(18), node_list)
        end
 init do end
 end
@@ -11189,57 +10074,16 @@ special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
                                                null,
-                                               pexprnode15
+                                               null
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(19), node_list)
        end
 init do end
 end
@@ -11248,47 +10092,19 @@ special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
+                                       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
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(19), node_list)
        end
 init do end
 end
@@ -11297,57 +10113,22 @@ special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               null,
-                                               pexprnode15
+                                       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
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(19), node_list)
        end
 init do end
 end
@@ -11356,172 +10137,116 @@ special 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 nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = nodearraylist2
+                                       assert listnode1 isa Array[Object]
+#                                      if listnode1 != null then
+                                               if listnode2.is_empty then
+                                                       listnode2 = listnode1
+                                               else
+                                                       listnode2.append(listnode1)
+                                               end
+#                                      end
+                                       node_list = listnode2
+                                       p.push(p.go_to(20), node_list)
+       end
+init do end
+end
+private class ReduceAction224
+special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
+                                       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,
-                                               pexprnode15
+                                               tbangnode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               null
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pclosuredeclnode1
+                                       p.push(p.go_to(21), node_list)
        end
 init do end
 end
-private class ReduceAction224
+private class ReduceAction225
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               null,
-                                               pexprnode13
+                                       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
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pclosuredeclnode1
+                                       p.push(p.go_to(21), node_list)
        end
 init do end
 end
-private class ReduceAction225
+private class ReduceAction226
 special 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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
+                                       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 pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
                                                null,
-                                               pexprnode13
+                                               tbangnode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               pexprnode6
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pclosuredeclnode1
+                                       p.push(p.go_to(21), node_list)
        end
 init do end
 end
-private class ReduceAction226
+private class ReduceAction227
 special 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
@@ -11529,150 +10254,107 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
+                                       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 tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
+                                       node_list = pclosuredeclnode1
+                                       p.push(p.go_to(21), node_list)
+       end
+init do end
+end
+private class ReduceAction228
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       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,
-                                               pexprnode13
+                                               tclassidnode3,
+                                               listnode4
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(22), node_list)
        end
 init do end
 end
-private class ReduceAction227
+private class ReduceAction229
 special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa nullable TKwvar
-                                       var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               null,
-                                               tkwvarnode8,
-                                               tattridnode9,
-                                               null,
-                                               pexprnode11
+                                       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
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(22), node_list)
        end
 init do end
 end
-private class ReduceAction228
+private class ReduceAction230
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               tclassidnode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(22), node_list)
        end
 init do end
 end
-private class ReduceAction229
+private class ReduceAction231
 special 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
@@ -11680,1038 +10362,883 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               tclassidnode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(22), node_list)
        end
 init do end
 end
-private class ReduceAction230
+private class ReduceAction232
+special 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
+                                       assert ptypenode1 isa nullable AType
+                                       if ptypenode1 != null then
+                                               listnode2.add(ptypenode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(23), node_list)
+       end
+init do end
+end
+private class ReduceAction233
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var ptypenode1 = nodearraylist1
+                                       assert ptypenode1 isa nullable AType
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if ptypenode1 != null then
+                                               listnode3.add(ptypenode1)
+                                       end
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       node_list = listnode3
+                                       p.push(p.go_to(23), node_list)
        end
 init do end
 end
-private class ReduceAction231
+private class ReduceAction234
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var ptypenode1 = nodearraylist3
+                                       assert ptypenode1 isa nullable AType
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(24), node_list)
        end
 init do end
 end
-private class ReduceAction232
+private class ReduceAction235
 special 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 pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var ptypenode1 = nodearraylist3
+                                       assert ptypenode1 isa nullable AType
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(25), node_list)
        end
 init do end
 end
-private class ReduceAction233
+private class ReduceAction236
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist2
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode3
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
        end
 init do end
 end
-private class ReduceAction234
+private class ReduceAction237
 special 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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist2
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+#                                      if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
        end
 init do end
 end
-private class ReduceAction235
+private class ReduceAction238
 special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
        end
 init do end
 end
-private class ReduceAction236
+private class ReduceAction239
 special 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 PDoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa nullable TKwvar
-                                       var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable PType
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               null,
-                                               tkwvarnode8,
-                                               tattridnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
        end
 init do end
 end
-private class ReduceAction237
+private class ReduceAction240
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
        end
 init do end
 end
-private class ReduceAction238
+private class ReduceAction241
 special 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 pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pexprnode1 = nodearraylist2
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(27), node_list)
        end
 init do end
 end
-private class ReduceAction239
+private class ReduceAction242
 special 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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction243
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction244
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               null
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction240
+private class ReduceAction245
 special 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 pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
+                                       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
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction246
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
                                                null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                               null
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction241
+private class ReduceAction247
+special 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 plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               plabelnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction248
+special 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 pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               null,
+                                               pexprnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction249
+special 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 tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               plabelnode3,
+                                               pexprnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction250
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwabortnode2 = nodearraylist1
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
+                                               tkwabortnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction251
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction252
+special 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 plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               plabelnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction253
+special 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
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction254
+special 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 pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               plabelnode3,
+                                               pexprnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction255
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction256
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction257
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction258
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction259
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction260
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist13 = p.pop
-                                       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 pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa nullable TKwwritable
-                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction261
+special 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 listnode6 = new Array[Object]
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa nullable TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa nullable PVisibility
-                                       var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa nullable TKwvar
-                                       var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa nullable TAttrid
-                                       var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa nullable PType
-                                       var pexprnode15 = nodearraylist13
-                                       assert pexprnode15 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               tkwredefnode9,
-                                               pvisibilitynode10,
-                                               null,
-                                               tkwvarnode12,
-                                               tattridnode13,
-                                               ptypenode14,
-                                               pexprnode15
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction242
+private class ReduceAction262
 special 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 PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa nullable TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa nullable TKwreadable
-                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction263
+special 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 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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction243
+private class ReduceAction264
 special 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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
+                                       var listnode5 = new Array[Object]
+                                       var tkwsupernode3 = nodearraylist1
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                               tkwsupernode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction244
+private class ReduceAction265
 special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa nullable TKwwritable
-                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa nullable TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa nullable PVisibility
-                                       var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa nullable TKwvar
-                                       var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa nullable TAttrid
-                                       var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa nullable PType
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode7,
-                                               pvisibilitynode8,
-                                               null,
-                                               tkwvarnode10,
-                                               tattridnode11,
-                                               ptypenode12,
-                                               pexprnode13
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction245
+private class ReduceAction266
 special 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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable PVisibility
-                                       var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa nullable TKwvar
-                                       var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable PType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable PExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               null,
-                                               tkwvarnode8,
-                                               tattridnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction246
+private class ReduceAction267
 special 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist6
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction247
+private class ReduceAction268
 special 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       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 = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = plabelnode1
+                                       p.push(p.go_to(29), node_list)
        end
 init do end
 end
-private class ReduceAction248
+private class ReduceAction269
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       assert pclosuredefnode1 isa nullable AClosureDef
+                                       if pclosuredefnode1 != null then
+                                               listnode2.add(pclosuredefnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(30), node_list)
+       end
+init do end
+end
+private class ReduceAction270
 special 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       assert pclosuredefnode1 isa nullable AClosureDef
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pclosuredefnode1 != null then
+                                               listnode3.add(pclosuredefnode1)
+                                       end
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       node_list = listnode3
+                                       p.push(p.go_to(30), node_list)
        end
 init do end
 end
-private class ReduceAction249
+private class ReduceAction271
 special 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
@@ -12719,39 +11246,41 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction250
+private class ReduceAction272
 special 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
@@ -12759,114 +11288,116 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist6
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction251
+private class ReduceAction273
 special 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction252
+private class ReduceAction274
 special 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction253
+private class ReduceAction275
 special 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
@@ -12875,68 +11406,106 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode9 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction254
+private class ReduceAction276
 special 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwtypenode5 = nodearraylist3
-                                       assert tkwtypenode5 isa nullable TKwtype
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var ptypenode7 = nodearraylist5
-                                       assert ptypenode7 isa nullable PType
-                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode10 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       var listnode9 = nodearraylist7
+                                       assert listnode9 isa Array[Object]
+                                       if pexprnode8 != null then
+                                               listnode10.add(pexprnode8)
+                                       end
+#                                      if listnode9 != null then
+                                               if listnode10.is_empty then
+                                                       listnode10 = listnode9
+                                               else
+                                                       listnode10.append(listnode9)
+                                               end
+#                                      end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode10
+                                       )
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction255
+private class ReduceAction277
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -12947,887 +11516,1448 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwtypenode5 = nodearraylist4
-                                       assert tkwtypenode5 isa nullable TKwtype
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable PType
-                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction256
+private class ReduceAction278
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(13), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction257
+private class ReduceAction279
 special 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 tkwprivatenode2 = nodearraylist1
-                                       assert tkwprivatenode2 isa nullable TKwprivate
-                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
-                                               tkwprivatenode2
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(13), node_list)
+                                       var plabelnode9 = nodearraylist8
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode9
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction258
+private class ReduceAction280
 special 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 tkwprotectednode2 = nodearraylist1
-                                       assert tkwprotectednode2 isa nullable TKwprotected
-                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
-                                               tkwprotectednode2
+                                       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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(13), node_list)
+                                       var plabelnode10 = nodearraylist9
+                                       assert plabelnode10 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode10
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction259
+private class ReduceAction281
 special 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 tkwintrudenode2 = nodearraylist1
-                                       assert tkwintrudenode2 isa nullable TKwintrude
-                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
-                                               tkwintrudenode2
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
                                        )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(13), node_list)
+                                       var plabelnode8 = nodearraylist6
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode8
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction260
+private class ReduceAction282
 special 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 tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
-                                               tidnode2
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       var plabelnode8 = nodearraylist5
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode8
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction261
+private class ReduceAction283
 special 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 tplusnode2 = nodearraylist1
-                                       assert tplusnode2 isa nullable TPlus
-                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
-                                               tplusnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode9 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       var plabelnode10 = nodearraylist9
+                                       assert plabelnode10 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode10
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction262
+private class ReduceAction284
 special 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 tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa nullable TMinus
-                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
-                                               tminusnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode10 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       var listnode9 = nodearraylist7
+                                       assert listnode9 isa Array[Object]
+                                       if pexprnode8 != null then
+                                               listnode10.add(pexprnode8)
+                                       end
+#                                      if listnode9 != null then
+                                               if listnode10.is_empty then
+                                                       listnode10 = listnode9
+                                               else
+                                                       listnode10.append(listnode9)
+                                               end
+#                                      end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode10
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       var plabelnode11 = nodearraylist10
+                                       assert plabelnode11 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode11
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction263
+private class ReduceAction285
 special 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 tstarnode2 = nodearraylist1
-                                       assert tstarnode2 isa nullable TStar
-                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
-                                               tstarnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       var plabelnode9 = nodearraylist7
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode9
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction264
+private class ReduceAction286
 special 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 tslashnode2 = nodearraylist1
-                                       assert tslashnode2 isa nullable TSlash
-                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
-                                               tslashnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       var plabelnode9 = nodearraylist6
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode9
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction265
+private class ReduceAction287
 special 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 tpercentnode2 = nodearraylist1
-                                       assert tpercentnode2 isa nullable TPercent
-                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
-                                               tpercentnode2
+                                       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
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction266
+private class ReduceAction288
 special 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 teqnode2 = nodearraylist1
-                                       assert teqnode2 isa nullable TEq
-                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
-                                               teqnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       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
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
        end
 init do end
 end
-private class ReduceAction267
+private class ReduceAction289
 special 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 tnenode2 = nodearraylist1
-                                       assert tnenode2 isa nullable TNe
-                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
-                                               tnenode2
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(32), node_list)
        end
 init do end
 end
-private class ReduceAction268
+private class ReduceAction290
 special 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 tlenode2 = nodearraylist1
-                                       assert tlenode2 isa nullable TLe
-                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
-                                               tlenode2
+                                       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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(32), node_list)
        end
 init do end
 end
-private class ReduceAction269
+private class ReduceAction291
 special 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 tgenode2 = nodearraylist1
-                                       assert tgenode2 isa nullable TGe
-                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
-                                               tgenode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode9 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(32), node_list)
        end
 init do end
 end
-private class ReduceAction270
+private class ReduceAction292
 special 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 tltnode2 = nodearraylist1
-                                       assert tltnode2 isa nullable TLt
-                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
-                                               tltnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode10 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       var listnode9 = nodearraylist7
+                                       assert listnode9 isa Array[Object]
+                                       if pexprnode8 != null then
+                                               listnode10.add(pexprnode8)
+                                       end
+#                                      if listnode9 != null then
+                                               if listnode10.is_empty then
+                                                       listnode10 = listnode9
+                                               else
+                                                       listnode10.append(listnode9)
+                                               end
+#                                      end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode10
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction271
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tgtnode2 = nodearraylist1
-                                       assert tgtnode2 isa nullable TGt
-                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
-                                               tgtnode2
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(32), node_list)
        end
 init do end
 end
-private class ReduceAction272
+private class ReduceAction293
 special 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 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 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
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(32), node_list)
        end
 init do end
 end
-private class ReduceAction273
+private class ReduceAction294
 special 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 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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               null,
+                                               null
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(32), node_list)
        end
 init do end
 end
-private class ReduceAction274
+private class ReduceAction295
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       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 pclosureidnode1: nullable ASimpleClosureId = new ASimpleClosureId.init_asimpleclosureid(
+                                               tidnode2
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       node_list = pclosureidnode1
+                                       p.push(p.go_to(33), node_list)
        end
 init do end
 end
-private class ReduceAction275
+private class ReduceAction296
 special 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 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 tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pclosureidnode1: nullable ABreakClosureId = new ABreakClosureId.init_abreakclosureid(
+                                               tkwbreaknode2
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(14), node_list)
+                                       node_list = pclosureidnode1
+                                       p.push(p.go_to(33), node_list)
        end
 init do end
 end
-private class ReduceAction276
+private class ReduceAction297
 special 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 listnode4 = nodearraylist1
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
+                                       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,
-                                               listnode5
+                                               null,
+                                               null
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(15), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(34), node_list)
        end
 init do end
 end
-private class ReduceAction277
+private class ReduceAction298
 special 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]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       var listnode5 = nodearraylist2
-                                       assert listnode5 isa Array[Object]
-#                                      if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
-#                                      end
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
+                                       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,
                                                null,
-                                               listnode6
+                                               null
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(15), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(34), node_list)
        end
 init do end
 end
-private class ReduceAction278
+private class ReduceAction299
 special 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 listnode5 = new Array[Object]
-                                       var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa nullable PType
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               ptypenode3,
-                                               listnode5
+                                       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
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(15), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(34), node_list)
        end
 init do end
 end
-private class ReduceAction279
+private class ReduceAction300
 special 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 listnode6 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa nullable PType
-                                       var listnode5 = nodearraylist3
-                                       assert listnode5 isa Array[Object]
-#                                      if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
-#                                      end
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
+                                       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,
-                                               listnode6
+                                               tassignnode5,
+                                               pexprnode6
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(15), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(34), node_list)
        end
 init do end
 end
-private class ReduceAction280
+private class ReduceAction301
 special 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 listnode4 = new Array[Object]
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               null,
-                                               listnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist4
+                                       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(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(15), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction281
+private class ReduceAction302
 special 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 listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               null,
-                                               listnode5
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(15), node_list)
+                                       var tattridnode3 = nodearraylist1
+                                       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(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction282
+private class ReduceAction303
 special 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 listnode4 = new Array[Object]
-                                       var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa nullable PType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               ptypenode3,
-                                               listnode4
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       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,
+                                               listnode5,
+                                               tassignnode6,
+                                               pexprnode7
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(15), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction283
+private class ReduceAction304
 special 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 listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
                                                else
-                                                       listnode3.append(listnode2)
+                                                       listnode5.append(listnode4)
                                                end
 #                                      end
-                                       var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa nullable PType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               ptypenode4,
-                                               listnode5
-                                       )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(15), node_list)
-       end
-init do end
-end
-private class ReduceAction284
-special 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 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,
+                                               listnode5,
+                                               tassignnode6,
+                                               pexprnode7
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction285
+private class ReduceAction305
 special 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 listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+#                                      if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
                                                else
-                                                       listnode3.append(listnode2)
+                                                       listnode4.append(listnode3)
                                                end
 #                                      end
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               null,
-                                               listnode5
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               tassignnode5,
+                                               pexprnode6
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction286
+private class ReduceAction306
 special 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 listnode4 = new Array[Object]
-                                       var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa nullable PType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode2,
-                                               ptypenode3,
-                                               listnode4
+                                       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(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction287
+private class ReduceAction307
 special 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 listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa nullable PType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               listnode3,
-                                               ptypenode4,
-                                               listnode5
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       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(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction288
+private class ReduceAction308
 special 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 pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa nullable PParam
-                                       if pparamnode1 != null then
-                                               listnode2.add(pparamnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(17), node_list)
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction289
+private class ReduceAction309
 special 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 pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa nullable PParam
-                                       var listnode2 = nodearraylist4
-                                       assert listnode2 isa Array[Object]
-                                       if pparamnode1 != null then
-                                               listnode3.add(pparamnode1)
-                                       end
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
+                                       var listnode5 = 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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
                                                else
-                                                       listnode3.append(listnode2)
+                                                       listnode5.append(listnode4)
                                                end
 #                                      end
-                                       node_list = listnode3
-                                       p.push(p.go_to(17), node_list)
+                                       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,
+                                               listnode5,
+                                               passignopnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction290
+private class ReduceAction310
 special 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 listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(17), node_list)
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+#                                      if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+#                                      end
+                                       var passignopnode5 = nodearraylist3
+                                       assert passignopnode5 isa nullable AAssignOp
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               passignopnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction291
+private class ReduceAction311
 special 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 pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa nullable PParam
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(18), node_list)
+                                       var tpluseqnode2 = nodearraylist1
+                                       assert tpluseqnode2 isa nullable TPluseq
+                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
+                                               tpluseqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(36), node_list)
        end
 init do end
 end
-private class ReduceAction292
+private class ReduceAction312
 special 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 tminuseqnode2 = nodearraylist1
+                                       assert tminuseqnode2 isa nullable TMinuseq
+                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
+                                               tminuseqnode2
                                        )
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(19), node_list)
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(36), node_list)
        end
 init do end
 end
-private class ReduceAction293
+private class ReduceAction313
 special 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 tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable PType
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
                                                null
                                        )
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(19), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction294
+private class ReduceAction314
 special 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 ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable PType
-                                       var tdotdotdotnode4 = nodearraylist3
-                                       assert tdotdotdotnode4 isa nullable TDotdotdot
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               tdotdotdotnode4
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       if pexprnode4 != null then
+                                               listnode6.add(pexprnode4)
+                                       end
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+#                                      end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
                                        )
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(19), node_list)
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction295
+private class ReduceAction315
 special 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]
-#                                      if listnode1 != null then
-                                               if listnode2.is_empty then
-                                                       listnode2 = listnode1
-                                               else
-                                                       listnode2.append(listnode1)
-                                               end
-#                                      end
-                                       node_list = listnode2
-                                       p.push(p.go_to(20), node_list)
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
+                                       )
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction296
+private class ReduceAction316
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa nullable PSignature
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwwithnode2,
-                                               null,
-                                               tidnode4,
-                                               psignaturenode5,
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
+                                       )
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
                                                null
                                        )
-                                       node_list = pclosuredeclnode1
-                                       p.push(p.go_to(21), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction297
+private class ReduceAction317
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -13838,27 +12968,30 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tkwbreaknode3 = nodearraylist2
-                                       assert tkwbreaknode3 isa nullable TKwbreak
-                                       var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist5
-                                       assert psignaturenode5 isa nullable PSignature
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwwithnode2,
-                                               tkwbreaknode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               null
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode5
                                        )
-                                       node_list = pclosuredeclnode1
-                                       p.push(p.go_to(21), node_list)
+                                       var plabelnode6 = nodearraylist6
+                                       assert plabelnode6 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction298
+private class ReduceAction318
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -13870,140 +13003,179 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa nullable PSignature
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwwithnode2,
-                                               null,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               pexprnode6
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       if pexprnode4 != null then
+                                               listnode6.add(pexprnode4)
+                                       end
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+#                                      end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
                                        )
-                                       node_list = pclosuredeclnode1
-                                       p.push(p.go_to(21), node_list)
+                                       var plabelnode7 = nodearraylist7
+                                       assert plabelnode7 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction299
+private class ReduceAction319
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tkwbreaknode3 = nodearraylist2
-                                       assert tkwbreaknode3 isa nullable TKwbreak
-                                       var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist5
-                                       assert psignaturenode5 isa nullable PSignature
-                                       var pexprnode6 = nodearraylist7
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwwithnode2,
-                                               tkwbreaknode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               pexprnode6
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
                                        )
-                                       node_list = pclosuredeclnode1
-                                       p.push(p.go_to(21), node_list)
+                                       var plabelnode5 = nodearraylist4
+                                       assert plabelnode5 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction300
+private class ReduceAction320
 special 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 tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
                                        var listnode4 = new Array[Object]
-                                       var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               null,
-                                               tclassidnode3,
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode4
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(22), node_list)
+                                       var plabelnode5 = nodearraylist3
+                                       assert plabelnode5 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction301
+private class ReduceAction321
 special 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 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 = ptypenode1
-                                       p.push(p.go_to(22), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction302
+private class ReduceAction322
 special 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 listnode5 = new Array[Object]
-                                       var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               null,
-                                               tclassidnode3,
-                                               listnode5
+                                       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 = ptypenode1
-                                       p.push(p.go_to(22), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(38), node_list)
        end
 init do end
 end
-private class ReduceAction303
+private class ReduceAction323
+special 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 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(38), node_list)
+       end
+init do end
+end
+private class ReduceAction324
 special 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
@@ -14011,670 +13183,1038 @@ special ReduceAction
                                        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]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               tkwnullablenode2,
-                                               tclassidnode3,
-                                               listnode5
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       if pexprnode5 != null then
+                                               listnode6.add(pexprnode5)
+                                       end
+                                       var pexprnode4: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(22), node_list)
+                                       var pexprnode7 = nodearraylist9
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(38), node_list)
        end
 init do end
 end
-private class ReduceAction304
+private class ReduceAction325
 special 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 listnode2 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa nullable PType
-                                       if ptypenode1 != null then
-                                               listnode2.add(ptypenode1)
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var listnode6 = nodearraylist8
+                                       assert listnode6 isa Array[Object]
+                                       if pexprnode5 != null then
+                                               listnode7.add(pexprnode5)
                                        end
-                                       node_list = listnode2
-                                       p.push(p.go_to(23), node_list)
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
+                                       var pexprnode4: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var pexprnode8 = nodearraylist10
+                                       assert pexprnode8 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(38), node_list)
        end
 init do end
 end
-private class ReduceAction305
+private class ReduceAction326
 special 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 ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa nullable PType
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if ptypenode1 != null then
-                                               listnode3.add(ptypenode1)
-                                       end
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       node_list = listnode3
-                                       p.push(p.go_to(23), node_list)
+                                       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(38), node_list)
        end
 init do end
 end
-private class ReduceAction306
+private class ReduceAction327
 special 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 ptypenode1 = nodearraylist3
-                                       assert ptypenode1 isa nullable PType
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(24), node_list)
+                                       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(38), node_list)
        end
 init do end
 end
-private class ReduceAction307
+private class ReduceAction328
 special 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 ptypenode1 = nodearraylist3
-                                       assert ptypenode1 isa nullable PType
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(25), node_list)
+                                       var pexprnode1 = nodearraylist2
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(39), node_list)
        end
 init do end
 end
-private class ReduceAction308
+private class ReduceAction329
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(26), node_list)
+                                       node_list = null
+                                       p.push(p.go_to(39), node_list)
        end
 init do end
 end
-private class ReduceAction309
+private class ReduceAction330
 special 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 pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa nullable PExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       if pexprnode6 != null then
+                                               listnode7.add(pexprnode6)
                                        end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(26), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction310
+private class ReduceAction331
 special 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 pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa nullable PExpr
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var listnode7 = nodearraylist8
+                                       assert listnode7 isa Array[Object]
+                                       if pexprnode6 != null then
+                                               listnode8.add(pexprnode6)
                                        end
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
+#                                      if listnode7 != null then
+                                               if listnode8.is_empty then
+                                                       listnode8 = listnode7
                                                else
-                                                       listnode4.append(listnode3)
+                                                       listnode8.append(listnode7)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(26), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction311
+private class ReduceAction332
 special 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 pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2
+                                       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 listnode6 = new Array[Object]
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(26), node_list)
-       end
-init do end
-end
-private class ReduceAction312
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(26), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction313
+private class ReduceAction333
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
-       end
-init do end
-end
-private class ReduceAction314
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
-       end
-init do end
-end
-private class ReduceAction315
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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 listnode6 = new Array[Object]
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction316
+private class ReduceAction334
 special 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,
-                                               null
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       if pexprnode6 != null then
+                                               listnode7.add(pexprnode6)
+                                       end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var plabelnode8 = nodearraylist10
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode8
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction317
+private class ReduceAction335
 special 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 tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               pexprnode3
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var listnode7 = nodearraylist8
+                                       assert listnode7 isa Array[Object]
+                                       if pexprnode6 != null then
+                                               listnode8.add(pexprnode6)
+                                       end
+#                                      if listnode7 != null then
+                                               if listnode8.is_empty then
+                                                       listnode8 = listnode7
+                                               else
+                                                       listnode8.append(listnode7)
+                                               end
+#                                      end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var plabelnode9 = nodearraylist11
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode9
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction318
+private class ReduceAction336
 special 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 pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               null
+                                       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 listnode6 = new Array[Object]
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
+                                       )
+                                       var plabelnode7 = nodearraylist8
+                                       assert plabelnode7 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction319
+private class ReduceAction337
 special 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 pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               pexprnode3
+                                       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 listnode6 = new Array[Object]
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
+                                       )
+                                       var plabelnode7 = nodearraylist7
+                                       assert plabelnode7 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction320
+private class ReduceAction338
 special 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 tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa nullable TKwabort
-                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
-                                               tkwabortnode2
+                                       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(28), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction321
+private class ReduceAction339
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       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 tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction322
+private class ReduceAction340
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       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 tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               pexprnode3
+                                       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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist12
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
+                                       )
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
-       end
-init do end
-end
-private class ReduceAction323
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction324
+private class ReduceAction341
 special 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 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction325
+private class ReduceAction342
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction326
+private class ReduceAction343
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var plabelnode9 = nodearraylist14
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode9
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction327
+private class ReduceAction344
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist15 = p.pop
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist12
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
+                                       )
+                                       var plabelnode10 = nodearraylist15
+                                       assert plabelnode10 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode10
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction328
+private class ReduceAction345
 special 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 listnode5 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var tidnode3 = nodearraylist4
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var tidnode3 = nodearraylist3
                                        assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tkwdonode5 = nodearraylist9
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var plabelnode8 = nodearraylist12
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
                                                tidnode3,
-                                               listnode5,
-                                               listnode6
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode8
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction329
+private class ReduceAction346
 special 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 listnode5 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tidnode3 = nodearraylist1
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var tidnode3 = nodearraylist3
                                        assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tkwdonode5 = nodearraylist9
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var plabelnode8 = nodearraylist11
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
                                                tidnode3,
-                                               listnode5,
-                                               listnode6
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode8
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction330
+private class ReduceAction347
 special 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 listnode5 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var tidnode3 = nodearraylist4
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var tidnode3 = nodearraylist3
                                        assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
-                                               else
-                                                       listnode7.append(listnode6)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
+                                       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,
-                                               listnode5,
-                                               listnode7
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction331
+private class ReduceAction348
 special 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 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]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var listnode6 = nodearraylist3
-                                       assert listnode6 isa Array[Object]
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
-                                               else
-                                                       listnode7.append(listnode6)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
+                                       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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction332
+private class ReduceAction349
 special 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 listnode5 = new Array[Object]
-                                       var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               null,
-                                               tkwsupernode3,
-                                               listnode5
+                                       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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction333
+private class ReduceAction350
 special 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 listnode5 = new Array[Object]
-                                       var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable PQualified
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               listnode5
-                                       )
+                                       var tidnode1 = nodearraylist1
+                                       assert tidnode1 isa nullable TId
+                                       node_list = tidnode1
+                                       p.push(p.go_to(43), node_list)
+       end
+init do end
+end
+private class ReduceAction351
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction334
+private class ReduceAction352
 special 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 PExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa nullable TKwinit
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
 #                                      if listnode4 != null then
@@ -14684,28 +14224,40 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
 #                                      end
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction335
+private class ReduceAction353
 special 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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
 #                                      if listnode4 != null then
@@ -14715,98 +14267,38 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
 #                                      end
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
-       end
-init do end
-end
-private class ReduceAction336
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa nullable PClosureDef
-                                       if pclosuredefnode1 != null then
-                                               listnode2.add(pclosuredefnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(29), node_list)
-       end
-init do end
-end
-private class ReduceAction337
-special 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 pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa nullable PClosureDef
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pclosuredefnode1 != null then
-                                               listnode3.add(pclosuredefnode1)
-                                       end
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       node_list = listnode3
-                                       p.push(p.go_to(29), node_list)
-       end
-init do end
-end
-private class ReduceAction338
-special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode3,
-                                               tkwdonode4,
-                                               pexprnode5
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
-                                       node_list = pclosuredefnode1
-                                       p.push(p.go_to(30), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction339
+private class ReduceAction354
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -14816,471 +14308,316 @@ special ReduceAction
                                                        listnode4.append(listnode3)
                                                end
 #                                      end
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
+                                       var listnode5 = nodearraylist3
+                                       assert listnode5 isa Array[Object]
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
+                                               pexprnode2,
                                                listnode4,
-                                               tkwdonode5,
-                                               pexprnode6
+                                               listnode6
                                        )
-                                       node_list = pclosuredefnode1
-                                       p.push(p.go_to(30), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction340
+private class ReduceAction355
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var listnode7 = new Array[Object]
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable PExpr
-                                       if pexprnode6 != null then
-                                               listnode7.add(pexprnode6)
-                                       end
-                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode7
-                                       )
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode3,
-                                               tkwdonode4,
-                                               pexprnode5
-                                       )
-                                       node_list = pclosuredefnode1
-                                       p.push(p.go_to(31), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(45), node_list)
        end
 init do end
 end
-private class ReduceAction341
+private class ReduceAction356
 special 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 listnode3 = new Array[Object]
-                                       var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var listnode8 = new Array[Object]
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable PExpr
-                                       var listnode7 = nodearraylist5
-                                       assert listnode7 isa Array[Object]
-                                       if pexprnode6 != null then
-                                               listnode8.add(pexprnode6)
-                                       end
-#                                      if listnode7 != null then
-                                               if listnode8.is_empty then
-                                                       listnode8 = listnode7
-                                               else
-                                                       listnode8.append(listnode7)
-                                               end
-#                                      end
-                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode8
-                                       )
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode3,
-                                               tkwdonode4,
-                                               pexprnode5
+                                       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 = pclosuredefnode1
-                                       p.push(p.go_to(31), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(45), node_list)
        end
 init do end
 end
-private class ReduceAction342
+private class ReduceAction357
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(46), node_list)
+       end
+init do end
+end
+private class ReduceAction358
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-#                                      end
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var listnode8 = new Array[Object]
-                                       var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa nullable PExpr
-                                       if pexprnode7 != null then
-                                               listnode8.add(pexprnode7)
-                                       end
-                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode8
-                                       )
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6
+                                       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
                                        )
-                                       node_list = pclosuredefnode1
-                                       p.push(p.go_to(31), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction343
+private class ReduceAction359
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-#                                      end
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var listnode9 = new Array[Object]
-                                       var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa nullable PExpr
-                                       var listnode8 = nodearraylist6
-                                       assert listnode8 isa Array[Object]
-                                       if pexprnode7 != null then
-                                               listnode9.add(pexprnode7)
-                                       end
-#                                      if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-#                                      end
-                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode9
-                                       )
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6
+                                       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,
+                                               pexprnode3
                                        )
-                                       node_list = pclosuredefnode1
-                                       p.push(p.go_to(31), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction344
+private class ReduceAction360
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode3,
-                                               tkwdonode4,
-                                               null
-                                       )
-                                       node_list = pclosuredefnode1
-                                       p.push(p.go_to(31), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(47), node_list)
        end
 init do end
 end
-private class ReduceAction345
+private class ReduceAction361
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-#                                      end
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode4,
-                                               tkwdonode5,
-                                               null
+                                       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 = pclosuredefnode1
-                                       p.push(p.go_to(31), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(47), node_list)
        end
 init do end
 end
-private class ReduceAction346
+private class ReduceAction362
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       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,
-                                               null,
-                                               null
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction347
+private class ReduceAction363
 special 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 = nodearraylist3
-                                       assert ptypenode4 isa nullable PType
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               null,
-                                               null
+                                       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
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction348
+private class ReduceAction364
 special 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 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 PExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               null,
-                                               tassignnode5,
-                                               pexprnode6
+                                       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
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction349
+private class ReduceAction365
 special 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 PType
-                                       var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                       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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction350
+private class ReduceAction366
 special 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 PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction351
+private class ReduceAction367
 special 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 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                       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,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction352
+private class ReduceAction368
 special 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 PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa nullable TAssign
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               tassignnode6,
-                                               pexprnode7
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction353
+private class ReduceAction369
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -15289,37 +14626,20 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = 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]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa nullable TAssign
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                       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,
-                                               tidnode3,
-                                               listnode5,
-                                               tassignnode6,
-                                               pexprnode7
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction354
+private class ReduceAction370
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -15328,172 +14648,112 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-#                                      end
-                                       var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
-                                               listnode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction355
+private class ReduceAction371
 special 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 PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa nullable PAssignOp
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode2 isa nullable AExpr
+                                       var ptypenode3 = nodearraylist4
+                                       assert ptypenode3 isa nullable AType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                               ptypenode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction356
+private class ReduceAction372
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(49), node_list)
+       end
+init do end
+end
+private class ReduceAction373
 special 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 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa nullable PAssignOp
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       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,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(49), node_list)
        end
 init do end
 end
-private class ReduceAction357
+private class ReduceAction374
 special 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 PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa nullable PAssignOp
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               passignopnode6,
-                                               pexprnode7
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(49), node_list)
        end
 init do end
 end
-private class ReduceAction358
+private class ReduceAction375
 special 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 pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa nullable PAssignOp
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               passignopnode6,
-                                               pexprnode7
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(50), node_list)
        end
 init do end
 end
-private class ReduceAction359
+private class ReduceAction376
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -15502,406 +14762,354 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-#                                      end
-                                       var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa nullable PAssignOp
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
-                                               listnode4,
-                                               passignopnode5,
-                                               pexprnode6
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(50), node_list)
        end
 init do end
 end
-private class ReduceAction360
+private class ReduceAction377
 special 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 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 pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = passignopnode1
-                                       p.push(p.go_to(34), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(50), node_list)
        end
 init do end
 end
-private class ReduceAction361
+private class ReduceAction378
 special 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 tminuseqnode2 = nodearraylist1
-                                       assert tminuseqnode2 isa nullable TMinuseq
-                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
-                                               tminuseqnode2
+                                       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 = passignopnode1
-                                       p.push(p.go_to(34), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(50), node_list)
        end
 init do end
 end
-private class ReduceAction362
+private class ReduceAction379
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(35), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction363
+private class ReduceAction380
 special 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa nullable PExpr
-                                       var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode5
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
+                                               tminusnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(36), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction364
+private class ReduceAction381
 special 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
+                                       var tkwoncenode2 = nodearraylist1
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa nullable PExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               null
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
+                                               tkwoncenode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(36), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction365
+private class ReduceAction382
 special 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 PExpr
-                                       var listnode6 = new Array[Object]
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable PExpr
-                                       if pexprnode5 != null then
-                                               listnode6.add(pexprnode5)
-                                       end
-                                       var pexprnode4: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode6
-                                       )
-                                       var pexprnode7 = nodearraylist9
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode7
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(36), node_list)
+                                       p.push(p.go_to(52), node_list)
        end
 init do end
 end
-private class ReduceAction366
+private class ReduceAction383
 special 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 PExpr
-                                       var listnode7 = new Array[Object]
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable PExpr
-                                       var listnode6 = nodearraylist8
-                                       assert listnode6 isa Array[Object]
-                                       if pexprnode5 != null then
-                                               listnode7.add(pexprnode5)
-                                       end
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
+                                       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]
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
                                                else
-                                                       listnode7.append(listnode6)
+                                                       listnode6.append(listnode5)
                                                end
 #                                      end
-                                       var pexprnode4: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode7
-                                       )
-                                       var pexprnode8 = nodearraylist10
-                                       assert pexprnode8 isa nullable PExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode8
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               null,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(36), node_list)
+                                       p.push(p.go_to(52), node_list)
        end
 init do end
 end
-private class ReduceAction367
+private class ReduceAction384
 special 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
+                                       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,
-                                               null,
-                                               pexprnode5
+                                               tattridnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(36), node_list)
+                                       p.push(p.go_to(52), node_list)
        end
 init do end
 end
-private class ReduceAction368
+private class ReduceAction385
 special 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
+                                       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,
-                                               null,
-                                               pexprnode5
+                                               tattridnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(36), node_list)
+                                       p.push(p.go_to(52), node_list)
        end
 init do end
 end
-private class ReduceAction369
+private class ReduceAction386
 special 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 pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa nullable PExpr
+                                       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
-                                       p.push(p.go_to(37), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction370
+private class ReduceAction387
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(37), node_list)
+                                       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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction371
+private class ReduceAction388
 special 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 PExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(38), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction372
+private class ReduceAction389
 special 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
+                                       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 pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa nullable PExpr
-                                       var tkwdonode5 = nodearraylist9
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist10
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
                                                tidnode3,
-                                               pexprnode4,
-                                               tkwdonode5,
-                                               pexprnode6
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(39), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction373
+private class ReduceAction390
 special 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 PExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
+                                       var listnode5 = new Array[Object]
+                                       var tkwsupernode3 = nodearraylist1
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
-                                               pexprnode4
+                                               tkwsupernode3,
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(40), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction374
+private class ReduceAction391
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -15909,109 +15117,76 @@ special ReduceAction
                                        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 PExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               tidnode3,
-                                               pexprnode4
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(40), node_list)
-       end
-init do end
-end
-private class ReduceAction375
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa nullable TId
-                                       node_list = tidnode1
-                                       p.push(p.go_to(41), node_list)
-       end
-init do end
-end
-private class ReduceAction376
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction377
+private class ReduceAction392
 special 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 PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa nullable TKwinit
                                        var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
 #                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
                                                else
-                                                       listnode7.append(listnode6)
+                                                       listnode5.append(listnode4)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
+                                               tkwinitnode3,
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction378
+private class ReduceAction393
 special 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 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 tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa nullable TKwinit
                                        var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
 #                                      if listnode4 != null then
@@ -16021,38 +15196,27 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
 #                                      end
-                                       var listnode6 = nodearraylist3
-                                       assert listnode6 isa Array[Object]
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
-                                               else
-                                                       listnode7.append(listnode6)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
+                                               tkwinitnode3,
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction379
+private class ReduceAction394
 special 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 listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -16062,7 +15226,36 @@ special ReduceAction
                                                        listnode4.append(listnode3)
                                                end
 #                                      end
-                                       var listnode5 = nodearraylist3
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(53), node_list)
+       end
+init do end
+end
+private class ReduceAction395
+special 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 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]
 #                                      if listnode5 != null then
                                                if listnode6.is_empty then
@@ -16071,36 +15264,49 @@ special ReduceAction
                                                        listnode6.append(listnode5)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
-                                               pexprnode2,
-                                               listnode4,
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction380
+private class ReduceAction396
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction381
+private class ReduceAction397
 special 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
@@ -16110,312 +15316,337 @@ special ReduceAction
                                        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 PExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable PExpr
-                                       var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                       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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction382
+private class ReduceAction398
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
+                                               listnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction383
+private class ReduceAction399
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwselfnode2 = nodearraylist1
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
+                                               tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction384
+private class ReduceAction400
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwtruenode2 = nodearraylist1
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
+                                               tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction385
+private class ReduceAction401
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var tkwfalsenode2 = nodearraylist1
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
+                                               tkwfalsenode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(45), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction386
+private class ReduceAction402
 special 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 tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa nullable TKwnot
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
-                                               tkwnotnode2,
-                                               pexprnode3
+                                       var tkwnullnode2 = nodearraylist1
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
+                                               tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(45), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction387
+private class ReduceAction403
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var tnumbernode2 = nodearraylist1
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
+                                               tnumbernode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction388
+private class ReduceAction404
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tfloatnode2 = nodearraylist1
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
+                                               tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction389
+private class ReduceAction405
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
+                                               tcharnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(53), node_list)
+       end
+init do end
+end
+private class ReduceAction406
+special 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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction390
+private class ReduceAction407
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction391
+private class ReduceAction408
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist2
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction392
+private class ReduceAction409
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
+                                       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,
-                                               pexprnode3
+                                               tkwasnode3,
+                                               ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction393
+private class ReduceAction410
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
+                                       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,
-                                               pexprnode3
+                                               tkwasnode3,
+                                               tkwnotnode4,
+                                               tkwnullnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction394
+private class ReduceAction411
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode4 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+#                                      if listnode2 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode2
+                                               else
+                                                       listnode4.append(listnode2)
+                                               end
+#                                      end
+                                       if pexprnode3 != null then
+                                               listnode4.add(pexprnode3)
+                                       end
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(54), node_list)
        end
 init do end
 end
-private class ReduceAction395
+private class ReduceAction412
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
-                                               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
+#                                      if listnode2 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode2
+                                               else
+                                                       listnode5.append(listnode2)
+                                               end
+#                                      end
+#                                      if listnode3 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode3
+                                               else
+                                                       listnode5.append(listnode3)
+                                               end
+#                                      end
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(54), node_list)
        end
 init do end
 end
-private class ReduceAction396
+private class ReduceAction413
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -16424,33 +15655,39 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa nullable PType
-                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
-                                               pexprnode2,
-                                               ptypenode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       var pexprnode2 = nodearraylist3
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(55), node_list)
        end
 init do end
 end
-private class ReduceAction397
+private class ReduceAction414
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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(47), node_list)
+                                       p.push(p.go_to(56), node_list)
        end
 init do end
 end
-private class ReduceAction398
+private class ReduceAction415
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -16459,443 +15696,355 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       var pexprnode2 = nodearraylist3
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(57), node_list)
        end
 init do end
 end
-private class ReduceAction399
+private class ReduceAction416
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
-                                               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(47), node_list)
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction400
+private class ReduceAction417
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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(48), node_list)
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction401
+private class ReduceAction418
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(48), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa nullable AExpr
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(60), node_list)
        end
 init do end
 end
-private class ReduceAction402
+private class ReduceAction419
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(48), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa nullable AExpr
+                                       var listnode2 = nodearraylist5
+                                       assert listnode2 isa Array[Object]
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       node_list = listnode3
+                                       p.push(p.go_to(60), node_list)
        end
 init do end
 end
-private class ReduceAction403
+private class ReduceAction420
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(48), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(60), node_list)
        end
 init do end
 end
-private class ReduceAction404
+private class ReduceAction421
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(49), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(60), node_list)
        end
 init do end
 end
-private class ReduceAction405
+private class ReduceAction422
 special 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 tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa nullable TMinus
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
-                                               tminusnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(49), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa nullable AExpr
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(61), node_list)
        end
 init do end
 end
-private class ReduceAction406
+private class ReduceAction423
 special 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 tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa nullable TKwonce
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
-                                               tkwoncenode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(49), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa nullable AExpr
+                                       var listnode2 = nodearraylist5
+                                       assert listnode2 isa Array[Object]
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       node_list = listnode3
+                                       p.push(p.go_to(61), node_list)
        end
 init do end
 end
-private class ReduceAction407
+private class ReduceAction424
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(50), node_list)
+                                       assert pexprnode1 isa nullable AExpr
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(61), node_list)
        end
 init do end
 end
-private class ReduceAction408
+private class ReduceAction425
 special 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 PType
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-#                                      if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               null,
-                                               listnode6
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(50), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(61), node_list)
        end
 init do end
 end
-private class ReduceAction409
+private class ReduceAction426
 special 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 PExpr
-                                       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(50), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(61), node_list)
        end
 init do end
 end
-private class ReduceAction410
+private class ReduceAction427
 special 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: 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
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(50), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa nullable AExpr
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(62), node_list)
        end
 init do end
 end
-private class ReduceAction411
+private class ReduceAction428
 special 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 PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
-       end
-init do end
-end
-private class ReduceAction412
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       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
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa nullable AExpr
+                                       var listnode2 = nodearraylist5
+                                       assert listnode2 isa Array[Object]
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       node_list = listnode3
+                                       p.push(p.go_to(62), node_list)
        end
 init do end
 end
-private class ReduceAction413
+private class ReduceAction429
 special 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 PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode6
-                                       )
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       p.push(p.go_to(63), node_list)
        end
 init do end
 end
-private class ReduceAction414
+private class ReduceAction430
 special 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 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]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = nodearraylist2
+                                       assert listnode1 isa Array[Object]
+#                                      if listnode1 != null then
+                                               if listnode2.is_empty then
+                                                       listnode2 = listnode1
                                                else
-                                                       listnode5.append(listnode4)
+                                                       listnode2.append(listnode1)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode6
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = listnode2
+                                       p.push(p.go_to(64), node_list)
        end
 init do end
 end
-private class ReduceAction415
+private class ReduceAction431
 special 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]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+#                                      if listnode1 != null then
+                                               if listnode2.is_empty then
+                                                       listnode2 = listnode1
                                                else
-                                                       listnode5.append(listnode4)
+                                                       listnode2.append(listnode1)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               null,
-                                               tkwsupernode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = listnode2
+                                       p.push(p.go_to(64), node_list)
        end
 init do end
 end
-private class ReduceAction416
+private class ReduceAction432
 special 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 listnode5 = new Array[Object]
-                                       var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable PQualified
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var tidnode1 = nodearraylist1
+                                       assert tidnode1 isa nullable TId
+                                       if tidnode1 != null then
+                                               listnode2.add(tidnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(65), node_list)
        end
 init do end
 end
-private class ReduceAction417
+private class ReduceAction433
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -16905,192 +16054,180 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
+                                       var listnode3 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       var tidnode2 = nodearraylist5
+                                       assert tidnode2 isa nullable TId
+#                                      if listnode1 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode1
                                                else
-                                                       listnode5.append(listnode4)
+                                                       listnode3.append(listnode1)
                                                end
 #                                      end
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                       if tidnode2 != null then
+                                               listnode3.add(tidnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(65), node_list)
+       end
+init do end
+end
+private class ReduceAction434
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode2,
+                                               tclassidnode3
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = pqualifiednode1
+                                       p.push(p.go_to(66), node_list)
        end
 init do end
 end
-private class ReduceAction418
+private class ReduceAction435
 special 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]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
                                                else
-                                                       listnode5.append(listnode4)
+                                                       listnode3.append(listnode2)
                                                end
 #                                      end
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                       var tclassidnode4 = nodearraylist2
+                                       assert tclassidnode4 isa nullable TClassid
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode3,
+                                               tclassidnode4
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = pqualifiednode1
+                                       p.push(p.go_to(66), node_list)
        end
 init do end
 end
-private class ReduceAction419
+private class ReduceAction436
 special 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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
                                                else
-                                                       listnode4.append(listnode3)
+                                                       listnode3.append(listnode2)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
-                                               pexprnode2,
-                                               listnode4,
-                                               listnode5
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode3,
+                                               null
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = pqualifiednode1
+                                       p.push(p.go_to(66), node_list)
        end
 init do end
 end
-private class ReduceAction420
+private class ReduceAction437
 special 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 listnode6 = new Array[Object]
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable PType
-                                       var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa nullable TId
-                                       var listnode5 = nodearraylist7
-                                       assert listnode5 isa Array[Object]
-#                                      if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               tidnode4,
-                                               listnode6
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       var tidnode1 = nodearraylist1
+                                       assert tidnode1 isa nullable TId
+                                       node_list = tidnode1
+                                       p.push(p.go_to(67), node_list)
        end
 init do end
 end
-private class ReduceAction421
+private class ReduceAction438
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       var tclassidnode1 = nodearraylist1
+                                       assert tclassidnode1 isa nullable TClassid
+                                       node_list = tclassidnode1
+                                       p.push(p.go_to(68), node_list)
+       end
+init do end
+end
+private class ReduceAction439
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       p.push(p.go_to(69), node_list)
+       end
+init do end
+end
+private class ReduceAction440
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       p.push(p.go_to(69), node_list)
        end
 init do end
 end
-private class ReduceAction422
+private class ReduceAction441
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       var pdocnode1: nullable ADoc = new ADoc.init_adoc(
+                                               listnode3
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(70), node_list)
        end
 init do end
 end
-private class ReduceAction423
+private class ReduceAction442
 special 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
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
 #                                      if listnode2 != null then
                                                if listnode3.is_empty then
@@ -17099,177 +16236,335 @@ special ReduceAction
                                                        listnode3.append(listnode2)
                                                end
 #                                      end
-                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
+                                       var pdocnode1: nullable ADoc = new ADoc.init_adoc(
                                                listnode3
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(70), node_list)
        end
 init do end
 end
-private class ReduceAction424
+private class ReduceAction443
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa nullable TKwself
-                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
-                                               tkwselfnode2
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = null
+                                       p.push(p.go_to(70), node_list)
        end
 init do end
 end
-private class ReduceAction425
+private class ReduceAction444
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       node_list = null
+                                       p.push(p.go_to(71), node_list)
+       end
+init do end
+end
+private class ReduceAction445
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa nullable TKwtrue
-                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
-                                               tkwtruenode2
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       var pdocnode1 = nodearraylist1
+                                       assert pdocnode1 isa nullable ADoc
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction426
+private class ReduceAction446
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       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
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       p.push(p.go_to(72), node_list)
        end
 init do end
 end
-private class ReduceAction427
+private class ReduceAction447
 special 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
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       p.push(p.go_to(72), node_list)
        end
 init do end
 end
-private class ReduceAction428
+private class ReduceAction448
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa nullable TNumber
-                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
-                                               tnumbernode2
+                                       p.push(p.go_to(72), node_list)
+       end
+init do end
+end
+private class ReduceAction449
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ppropdefnode1 = nodearraylist1
+                                       assert ppropdefnode1 isa nullable APropdef
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(73), node_list)
+       end
+init do end
+end
+private class ReduceAction450
+special 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 pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction429
+private class ReduceAction451
 special 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 tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa nullable TFloat
-                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
-                                               tfloatnode2
+                                       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 pexprnode8 = nodearraylist8
+                                       assert pexprnode8 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction430
+private class ReduceAction452
 special 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 tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa nullable TChar
-                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
-                                               tcharnode2
+                                       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 = nodearraylist7
+                                       assert pexprnode8 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction431
+private class ReduceAction453
 special 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 tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa nullable TString
-                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
-                                               tstringnode2
+                                       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 pexprnode8 = nodearraylist8
+                                       assert pexprnode8 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction432
+private class ReduceAction454
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       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 AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction433
+private class ReduceAction455
 special 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 pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       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 ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction434
+private class ReduceAction456
 special 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
@@ -17278,30 +16573,37 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa nullable PType
-                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
-                                               ptypenode4
+                                       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
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction435
+private class ReduceAction457
 special 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
@@ -17311,417 +16613,424 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       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 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 = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction436
+private class ReduceAction458
 special 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 listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-#                                      if listnode2 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode2
-                                               else
-                                                       listnode4.append(listnode2)
-                                               end
-#                                      end
-                                       if pexprnode3 != null then
-                                               listnode4.add(pexprnode3)
-                                       end
-                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               tclassidnode3,
                                                listnode4
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(75), node_list)
        end
 init do end
 end
-private class ReduceAction437
+private class ReduceAction459
 special 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 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 PExpr
-#                                      if listnode2 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode2
-                                               else
-                                                       listnode5.append(listnode2)
-                                               end
-#                                      end
-#                                      if listnode3 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode3
-                                               else
-                                                       listnode5.append(listnode3)
-                                               end
-#                                      end
-                                       if pexprnode4 != null then
-                                               listnode5.add(pexprnode4)
-                                       end
-                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode5
+                                       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
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(75), node_list)
        end
 init do end
 end
-private class ReduceAction438
+private class ReduceAction460
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa nullable PExpr
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(53), node_list)
-       end
-init do end
-end
-private class ReduceAction439
-special 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
-                                       )
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(54), node_list)
+                                       p.push(p.go_to(76), node_list)
        end
 init do end
 end
-private class ReduceAction440
+private class ReduceAction461
 special 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 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa nullable PExpr
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(55), node_list)
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(76), node_list)
        end
 init do end
 end
-private class ReduceAction441
+private class ReduceAction462
 special 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 tmidstringnode2 = nodearraylist1
-                                       assert tmidstringnode2 isa nullable TMidString
-                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
-                                               tmidstringnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(56), node_list)
+                                       p.push(p.go_to(76), node_list)
        end
 init do end
 end
-private class ReduceAction442
+private class ReduceAction463
 special 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 pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(57), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction443
+private class ReduceAction464
 special 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 listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa nullable PExpr
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(58), node_list)
+                                       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(77), node_list)
        end
 init do end
 end
-private class ReduceAction444
+private class ReduceAction465
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       var listnode2 = nodearraylist5
-                                       assert listnode2 isa Array[Object]
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       node_list = listnode3
-                                       p.push(p.go_to(58), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction445
+private class ReduceAction466
 special 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 listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(58), node_list)
+                                       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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction446
+private class ReduceAction467
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(58), node_list)
+                                       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 AAndExpr = new AAndExpr.init_aandexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction447
+private class ReduceAction468
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(59), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction448
+private class ReduceAction469
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       var listnode2 = nodearraylist5
-                                       assert listnode2 isa Array[Object]
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       node_list = listnode3
-                                       p.push(p.go_to(59), node_list)
+                                       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(79), node_list)
        end
 init do end
 end
-private class ReduceAction449
+private class ReduceAction470
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(59), node_list)
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction450
+private class ReduceAction471
 special 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 listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(59), node_list)
+                                       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
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction451
+private class ReduceAction472
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(59), node_list)
+                                       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
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction452
+private class ReduceAction473
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(60), node_list)
+                                       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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction453
+private class ReduceAction474
 special 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
-                                       assert pexprnode1 isa nullable PExpr
-                                       var listnode2 = nodearraylist5
-                                       assert listnode2 isa Array[Object]
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       node_list = listnode3
-                                       p.push(p.go_to(60), node_list)
+                                       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 = pexprnode1
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction454
+private class ReduceAction475
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -17730,592 +17039,635 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa nullable PExpr
+                                       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(61), node_list)
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction455
+private class ReduceAction476
 special 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 tidnode1 = nodearraylist1
-                                       assert tidnode1 isa nullable TId
-                                       if tidnode1 != null then
-                                               listnode2.add(tidnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(62), node_list)
+                                       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
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction456
+private class ReduceAction477
 special 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
-                                       assert tidnode2 isa nullable TId
-#                                      if listnode1 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode1
-                                               else
-                                                       listnode3.append(listnode1)
-                                               end
-#                                      end
-                                       if tidnode2 != null then
-                                               listnode3.add(tidnode2)
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(62), node_list)
+                                       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
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction457
+private class ReduceAction478
 special 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 tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode2,
-                                               tclassidnode3
+                                       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 = pqualifiednode1
-                                       p.push(p.go_to(63), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction458
+private class ReduceAction479
 special 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 listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       var tclassidnode4 = nodearraylist2
-                                       assert tclassidnode4 isa nullable TClassid
-                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode3,
-                                               tclassidnode4
+                                       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 = pqualifiednode1
-                                       p.push(p.go_to(63), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction459
+private class ReduceAction480
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode3,
-                                               null
-                                       )
-                                       node_list = pqualifiednode1
-                                       p.push(p.go_to(63), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(81), node_list)
        end
 init do end
 end
-private class ReduceAction460
+private class ReduceAction481
 special 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 tidnode1 = nodearraylist1
-                                       assert tidnode1 isa nullable TId
-                                       node_list = tidnode1
-                                       p.push(p.go_to(64), node_list)
+                                       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 = pexprnode1
+                                       p.push(p.go_to(81), node_list)
        end
 init do end
 end
-private class ReduceAction461
+private class ReduceAction482
 special 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 tclassidnode1 = nodearraylist1
-                                       assert tclassidnode1 isa nullable TClassid
-                                       node_list = tclassidnode1
-                                       p.push(p.go_to(65), node_list)
+                                       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 = pexprnode1
+                                       p.push(p.go_to(81), node_list)
        end
 init do end
 end
-private class ReduceAction462
+private class ReduceAction483
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       p.push(p.go_to(66), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction463
+private class ReduceAction484
 special 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
-                                       p.push(p.go_to(66), node_list)
+                                       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
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction464
+private class ReduceAction485
 special 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 listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       var pdocnode1: nullable ADoc = new ADoc.init_adoc(
-                                               listnode3
+                                       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 = pdocnode1
-                                       p.push(p.go_to(67), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction465
+private class ReduceAction486
 special 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 listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       var pdocnode1: nullable ADoc = new ADoc.init_adoc(
-                                               listnode3
+                                       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 = pdocnode1
-                                       p.push(p.go_to(67), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction466
+private class ReduceAction487
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(67), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction467
+private class ReduceAction488
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       node_list = null
-                                       p.push(p.go_to(68), node_list)
+                                       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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction468
+private class ReduceAction489
 special 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 pdocnode1 = nodearraylist1
-                                       assert pdocnode1 isa nullable PDoc
-                                       node_list = pdocnode1
-                                       p.push(p.go_to(68), node_list)
+                                       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(83), node_list)
        end
 init do end
 end
-private class ReduceAction469
+private class ReduceAction490
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       p.push(p.go_to(69), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction470
+private class ReduceAction491
 special 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
-                                       p.push(p.go_to(69), node_list)
+                                       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]
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               null,
+                                               listnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction471
+private class ReduceAction492
 special 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
-                                       p.push(p.go_to(69), node_list)
+                                       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(84), node_list)
        end
 init do end
 end
-private class ReduceAction472
+private class ReduceAction493
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa nullable PPropdef
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(70), node_list)
+                                       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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction473
+private class ReduceAction494
 special 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       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 = ppropdefnode1
-                                       p.push(p.go_to(71), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction474
+private class ReduceAction495
+special ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
+       end
+init do end
+end
+private class ReduceAction496
 special 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(71), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction475
+private class ReduceAction497
 special 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var listnode5 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(71), node_list)
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction476
+private class ReduceAction498
 special 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable PExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var listnode5 = new Array[Object]
+                                       var tkwsupernode3 = nodearraylist1
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               null,
+                                               tkwsupernode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(71), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction477
+private class ReduceAction499
 special 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(71), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction478
+private class ReduceAction500
 special 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               listnode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(71), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction479
+private class ReduceAction501
 special 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable PSignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(71), node_list)
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction480
+private class ReduceAction502
 special 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
@@ -18323,336 +17675,257 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable PMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable PSignature
-                                       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
-                                       p.push(p.go_to(71), node_list)
-       end
-init do end
-end
-private class ReduceAction481
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       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 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]
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               listnode6
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(72), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction482
+private class ReduceAction503
 special 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 tkwselfnode2 = nodearraylist1
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
+                                               tkwselfnode2
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(72), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction483
+private class ReduceAction504
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var tkwtruenode2 = nodearraylist1
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
+                                               tkwtruenode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(73), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction484
+private class ReduceAction505
 special 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 PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
-                                               else
-                                                       listnode7.append(listnode6)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
+                                       var tkwfalsenode2 = nodearraylist1
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
+                                               tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(73), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction485
+private class ReduceAction506
 special 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 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]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var listnode6 = nodearraylist3
-                                       assert listnode6 isa Array[Object]
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
-                                               else
-                                                       listnode7.append(listnode6)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
+                                       var tkwnullnode2 = nodearraylist1
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
+                                               tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(73), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction486
+private class ReduceAction507
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var tnumbernode2 = nodearraylist1
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
+                                               tnumbernode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction487
+private class ReduceAction508
 special 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable PExpr
-                                       var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                       var tfloatnode2 = nodearraylist1
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
+                                               tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction488
+private class ReduceAction509
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
+                                               tcharnode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(75), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction489
+private class ReduceAction510
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tstringnode2 = nodearraylist1
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
+                                               tstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(75), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction490
+private class ReduceAction511
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(75), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction491
+private class ReduceAction512
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var pexprnode1 = nodearraylist2
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction492
+private class ReduceAction513
 special 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 tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa nullable TKwnot
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
-                                               tkwnotnode2,
-                                               pexprnode3
+                                       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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction493
+private class ReduceAction514
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction494
+private class ReduceAction515
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -18661,345 +17934,321 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist2
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction495
+private class ReduceAction516
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist2
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+#                                      if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction496
+private class ReduceAction517
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction497
+private class ReduceAction518
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction498
+private class ReduceAction519
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction499
+private class ReduceAction520
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction500
+private class ReduceAction521
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction501
+private class ReduceAction522
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction502
+private class ReduceAction523
 special 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 PExpr
-                                       var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa nullable PType
-                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
-                                               pexprnode2,
-                                               ptypenode3
+                                       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 = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction503
+private class ReduceAction524
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               null,
+                                               null
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(78), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction504
+private class ReduceAction525
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       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,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(78), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction505
+private class ReduceAction526
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       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,
+                                               null,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(78), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction506
+private class ReduceAction527
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               plabelnode3,
+                                               pexprnode4
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(79), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction507
+private class ReduceAction528
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwabortnode2 = nodearraylist1
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
+                                               tkwabortnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(79), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction508
+private class ReduceAction529
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               null,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(79), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction509
+private class ReduceAction530
 special 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 PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       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,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(79), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction510
+private class ReduceAction531
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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
-                                       p.push(p.go_to(80), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction511
+private class ReduceAction532
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -19007,191 +18256,171 @@ special ReduceAction
                                        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 PExpr
-                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
-                                               tminusnode2,
-                                               pexprnode3
+                                       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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(80), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction512
+private class ReduceAction533
 special 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 PExpr
-                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
-                                               tkwoncenode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(80), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction513
+private class ReduceAction534
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction514
+private class ReduceAction535
 special 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 PType
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-#                                      if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               null,
-                                               listnode6
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction515
+private class ReduceAction536
 special 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 PExpr
-                                       var tattridnode4 = nodearraylist5
-                                       assert tattridnode4 isa nullable TAttrid
-                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
-                                               tkwissetnode2,
-                                               pexprnode3,
-                                               tattridnode4
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction516
+private class ReduceAction537
 special 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 pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction517
+private class ReduceAction538
 special 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 PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tattridnode3
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction518
+private class ReduceAction539
 special 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 listnode6 = new Array[Object]
                                        var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
+                                       assert listnode4 isa Array[Object]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tattridnode3
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction519
+private class ReduceAction540
 special 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 listnode6 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -19203,26 +18432,36 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
 #                                      end
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
                                        var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
-                                               listnode6
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction520
+private class ReduceAction541
 special 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 listnode5 = new Array[Object]
-                                       var listnode6 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
@@ -19236,18 +18475,27 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
 #                                      end
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+#                                      if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+#                                      end
                                        var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
-                                               listnode6
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction521
+private class ReduceAction542
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -19272,11 +18520,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction522
+private class ReduceAction543
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -19286,7 +18534,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable PQualified
+                                       assert pqualifiednode2 isa nullable AQualified
                                        var tkwsupernode3 = nodearraylist2
                                        assert tkwsupernode3 isa nullable TKwsuper
                                        var listnode4 = nodearraylist3
@@ -19304,11 +18552,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction523
+private class ReduceAction544
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -19320,7 +18568,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tkwinitnode3 = nodearraylist4
                                        assert tkwinitnode3 isa nullable TKwinit
                                        var listnode4 = nodearraylist5
@@ -19338,11 +18586,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction524
+private class ReduceAction545
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -19369,212 +18617,417 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
-       end
-init do end
-end
-private class ReduceAction525
-special 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 listnode6 = new Array[Object]
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable PType
-                                       var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa nullable TId
-                                       var listnode5 = nodearraylist7
-                                       assert listnode5 isa Array[Object]
-#                                      if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               tidnode4,
-                                               listnode6
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction526
+private class ReduceAction546
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa nullable TKwself
-                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
-                                               tkwselfnode2
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       assert pclosuredefnode1 isa nullable AClosureDef
+                                       if pclosuredefnode1 != null then
+                                               listnode2.add(pclosuredefnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction527
+private class ReduceAction547
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       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
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       assert pclosuredefnode1 isa nullable AClosureDef
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pclosuredefnode1 != null then
+                                               listnode3.add(pclosuredefnode1)
+                                       end
+#                                      if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+#                                      end
+                                       node_list = listnode3
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction528
+private class ReduceAction548
 special 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 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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction529
+private class ReduceAction549
 special 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 tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa nullable TKwnull
-                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
-                                               tkwnullnode2
+                                       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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction530
+private class ReduceAction550
 special 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 tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa nullable TNumber
-                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
-                                               tnumbernode2
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction531
+private class ReduceAction551
 special 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 tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa nullable TFloat
-                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
-                                               tfloatnode2
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction532
+private class ReduceAction552
 special 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 tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa nullable TChar
-                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
-                                               tcharnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode9 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction533
+private class ReduceAction553
 special 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 tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa nullable TString
-                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
-                                               tstringnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode10 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       var listnode9 = nodearraylist7
+                                       assert listnode9 isa Array[Object]
+                                       if pexprnode8 != null then
+                                               listnode10.add(pexprnode8)
+                                       end
+#                                      if listnode9 != null then
+                                               if listnode10.is_empty then
+                                                       listnode10 = listnode9
+                                               else
+                                                       listnode10.append(listnode9)
+                                               end
+#                                      end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode10
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction534
+private class ReduceAction554
 special 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 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction535
+private class ReduceAction555
 special 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 pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction536
+private class ReduceAction556
 special 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
@@ -19583,30 +19036,42 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa nullable PType
-                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
-                                               ptypenode4
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var plabelnode9 = nodearraylist8
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode9
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction537
+private class ReduceAction557
 special 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
@@ -19616,357 +19081,760 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       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 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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       var plabelnode10 = nodearraylist9
+                                       assert plabelnode10 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode10
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction538
+private class ReduceAction558
 special 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 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var plabelnode8 = nodearraylist6
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode8
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction539
+private class ReduceAction559
 special 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 = nodearraylist2
-                                       assert pexprnode2 isa nullable PExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       var plabelnode8 = nodearraylist5
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode8
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction540
+private class ReduceAction560
 special 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 listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa nullable PExpr
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
                                                else
-                                                       listnode4.append(listnode3)
+                                                       listnode5.append(listnode4)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode9 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       var plabelnode10 = nodearraylist9
+                                       assert plabelnode10 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode10
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction541
+private class ReduceAction561
 special 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 listnode2 = new Array[Object]
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode10 = new Array[Object]
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa nullable AExpr
+                                       var listnode9 = nodearraylist7
+                                       assert listnode9 isa Array[Object]
+                                       if pexprnode8 != null then
+                                               listnode10.add(pexprnode8)
+                                       end
+#                                      if listnode9 != null then
+                                               if listnode10.is_empty then
+                                                       listnode10 = listnode9
+                                               else
+                                                       listnode10.append(listnode9)
+                                               end
+#                                      end
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode10
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       var plabelnode11 = nodearraylist10
+                                       assert plabelnode11 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode11
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction542
+private class ReduceAction562
 special 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 pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       var plabelnode9 = nodearraylist7
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode9
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction543
+private class ReduceAction563
 special 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 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var plabelnode9 = nodearraylist6
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode9
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction544
+private class ReduceAction564
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       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
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction545
+private class ReduceAction565
 special 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 tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       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
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction546
+private class ReduceAction566
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               pexprnode3
+                                       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,
+                                               null,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(90), node_list)
        end
 init do end
 end
-private class ReduceAction547
+private class ReduceAction567
 special 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 tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
+                                       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,
+                                               null,
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(90), node_list)
        end
 init do end
 end
-private class ReduceAction548
+private class ReduceAction568
 special 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 pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               pexprnode3
+                                       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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(90), node_list)
        end
 init do end
 end
-private class ReduceAction549
+private class ReduceAction569
 special 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 tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa nullable TKwabort
-                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
-                                               tkwabortnode2
+                                       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
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(90), node_list)
        end
 init do end
 end
-private class ReduceAction550
+private class ReduceAction570
 special 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 tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist4
+                                       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(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction551
+private class ReduceAction571
 special 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 pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               pexprnode3
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tattridnode3 = nodearraylist1
+                                       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(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction552
+private class ReduceAction572
 special 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
-                                       assert pexprnode1 isa nullable PExpr
+                                       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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       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,
+                                               listnode5,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction553
+private class ReduceAction573
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var listnode5 = 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]
+#                                      if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+#                                      end
+                                       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,
+                                               listnode5,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction554
+private class ReduceAction574
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+#                                      if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+#                                      end
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               tassignnode5,
+                                               pexprnode6
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction555
+private class ReduceAction575
 special 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 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       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(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction556
+private class ReduceAction576
 special 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       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(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction557
+private class ReduceAction577
 special 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 listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -19978,26 +19846,32 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       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,
-                                               listnode6
+                                               passignopnode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction558
+private class ReduceAction578
 special 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
@@ -20011,418 +19885,488 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       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,
                                                listnode5,
-                                               listnode6
+                                               passignopnode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction559
+private class ReduceAction579
 special 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 listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+#                                      if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
                                                else
-                                                       listnode7.append(listnode6)
+                                                       listnode4.append(listnode3)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var passignopnode5 = nodearraylist3
+                                       assert passignopnode5 isa nullable AAssignOp
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
+                                               listnode4,
+                                               passignopnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction560
+private class ReduceAction580
 special 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 tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
                                        var listnode5 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode5
                                        )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var listnode6 = nodearraylist3
-                                       assert listnode6 isa Array[Object]
-#                                      if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(92), node_list)
+       end
+init do end
+end
+private class ReduceAction581
+special 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 listnode6 = new Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       if pexprnode4 != null then
+                                               listnode6.add(pexprnode4)
+                                       end
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
                                                else
-                                                       listnode7.append(listnode6)
+                                                       listnode6.append(listnode5)
                                                end
 #                                      end
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               listnode7
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(92), node_list)
+       end
+init do end
+end
+private class ReduceAction582
+special 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 tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
+                                       )
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction561
+private class ReduceAction583
 special 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]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               null,
-                                               tkwsupernode3,
-                                               listnode5
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
+                                       )
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction562
+private class ReduceAction584
 special 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 listnode5 = new Array[Object]
-                                       var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable PQualified
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode5
                                        )
+                                       var plabelnode6 = nodearraylist6
+                                       assert plabelnode6 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode6
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction563
+private class ReduceAction585
 special 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 PExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       if pexprnode4 != null then
+                                               listnode6.add(pexprnode4)
+                                       end
+#                                      if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
                                                else
-                                                       listnode5.append(listnode4)
+                                                       listnode6.append(listnode5)
                                                end
 #                                      end
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
+                                       )
+                                       var plabelnode7 = nodearraylist7
+                                       assert plabelnode7 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction564
+private class ReduceAction586
 special 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 pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
                                        )
-                                       var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                       var plabelnode5 = nodearraylist4
+                                       assert plabelnode5 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
-       end
-init do end
-end
-private class ReduceAction565
-special ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa nullable PClosureDef
-                                       if pclosuredefnode1 != null then
-                                               listnode2.add(pclosuredefnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction566
+private class ReduceAction587
 special 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 pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa nullable PClosureDef
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pclosuredefnode1 != null then
-                                               listnode3.add(pclosuredefnode1)
-                                       end
-#                                      if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-#                                      end
-                                       node_list = listnode3
-                                       p.push(p.go_to(85), node_list)
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4
+                                       )
+                                       var plabelnode5 = nodearraylist3
+                                       assert plabelnode5 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction567
+private class ReduceAction588
 special 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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode3,
-                                               tkwdonode4,
-                                               pexprnode5
+                                       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 = pclosuredefnode1
-                                       p.push(p.go_to(86), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction568
+private class ReduceAction589
 special 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 listnode4 = new Array[Object]
-                                       var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-#                                      end
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tkwwithnode2,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6
+                                       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 = pclosuredefnode1
-                                       p.push(p.go_to(86), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(93), node_list)
        end
 init do end
 end
-private class ReduceAction569
+private class ReduceAction590
 special 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 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,
-                                               null,
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       if pexprnode6 != null then
+                                               listnode7.add(pexprnode6)
+                                       end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction570
+private class ReduceAction591
 special 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 tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa nullable PType
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               null,
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var listnode7 = nodearraylist8
+                                       assert listnode7 isa Array[Object]
+                                       if pexprnode6 != null then
+                                               listnode8.add(pexprnode6)
+                                       end
+#                                      if listnode7 != null then
+                                               if listnode8.is_empty then
+                                                       listnode8 = listnode7
+                                               else
+                                                       listnode8.append(listnode7)
+                                               end
+#                                      end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction571
+private class ReduceAction592
 special 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 tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               null,
-                                               tassignnode5,
-                                               pexprnode6
+                                       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 listnode6 = new Array[Object]
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction572
+private class ReduceAction593
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -20433,90 +20377,132 @@ special ReduceAction
                                        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 PType
-                                       var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                       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 listnode6 = new Array[Object]
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction573
+private class ReduceAction594
 special 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 PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       if pexprnode6 != null then
+                                               listnode7.add(pexprnode6)
+                                       end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var plabelnode8 = nodearraylist10
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode8
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction574
+private class ReduceAction595
 special 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 pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var listnode7 = nodearraylist8
+                                       assert listnode7 isa Array[Object]
+                                       if pexprnode6 != null then
+                                               listnode8.add(pexprnode6)
+                                       end
+#                                      if listnode7 != null then
+                                               if listnode8.is_empty then
+                                                       listnode8 = listnode7
+                                               else
+                                                       listnode8.append(listnode7)
+                                               end
+#                                      end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
                                        )
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                       var plabelnode9 = nodearraylist11
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode9
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction575
+private class ReduceAction596
 special 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
@@ -20524,173 +20510,212 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa nullable TAssign
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               tassignnode6,
-                                               pexprnode7
+                                       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 listnode6 = new Array[Object]
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
+                                       )
+                                       var plabelnode7 = nodearraylist8
+                                       assert plabelnode7 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction576
+private class ReduceAction597
 special 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: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       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 listnode6 = new Array[Object]
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6
                                        )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa nullable TAssign
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               tassignnode6,
-                                               pexprnode7
+                                       var plabelnode7 = nodearraylist7
+                                       assert plabelnode7 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction577
+private class ReduceAction598
 special 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 PExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-#                                      end
-                                       var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
-                                               pexprnode2,
-                                               listnode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                       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(88), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction578
+private class ReduceAction599
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       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 PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa nullable PAssignOp
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction579
+private class ReduceAction600
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       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: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist12
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
                                        )
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa nullable PAssignOp
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction580
+private class ReduceAction601
 special 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
@@ -20698,136 +20723,192 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var tidnode3 = nodearraylist4
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var tidnode3 = nodearraylist3
                                        assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist5
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa nullable PAssignOp
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tkwdonode5 = nodearraylist9
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
                                                tidnode3,
-                                               listnode5,
-                                               passignopnode6,
-                                               pexprnode7
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction581
+private class ReduceAction602
 special 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 listnode5 = new Array[Object]
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tidnode3 = nodearraylist1
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var tidnode3 = nodearraylist3
                                        assert tidnode3 isa nullable TId
-                                       var listnode4 = nodearraylist2
-                                       assert listnode4 isa Array[Object]
-#                                      if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-#                                      end
-                                       var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa nullable PAssignOp
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa nullable PExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tkwdonode5 = nodearraylist9
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
                                                tidnode3,
-                                               listnode5,
-                                               passignopnode6,
-                                               pexprnode7
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction582
+private class ReduceAction603
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       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 listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-#                                      if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-#                                      end
-                                       var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa nullable PAssignOp
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable PExpr
-                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
-                                               pexprnode2,
-                                               listnode4,
-                                               passignopnode5,
-                                               pexprnode6
+                                       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 listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var plabelnode9 = nodearraylist14
+                                       assert plabelnode9 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode9
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction583
+private class ReduceAction604
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist15 = p.pop
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       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 tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3
+                                       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 listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       var listnode8 = nodearraylist12
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+#                                      if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode9
+                                       )
+                                       var plabelnode10 = nodearraylist15
+                                       assert plabelnode10 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode10
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(89), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction584
+private class ReduceAction605
 special 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
@@ -20836,56 +20917,77 @@ special ReduceAction
                                        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 PExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa nullable PExpr
-                                       var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var plabelnode8 = nodearraylist12
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
                                                pexprnode4,
-                                               pexprnode5
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode8
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction585
+private class ReduceAction606
 special 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 tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa nullable TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable PExpr
-                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5
+                                       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 listnode7 = new Array[Object]
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var plabelnode8 = nodearraylist11
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode8
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(91), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction586
+private class ReduceAction607
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -20905,24 +21007,25 @@ special ReduceAction
                                        var tidnode3 = nodearraylist3
                                        assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa nullable PExpr
+                                       assert pexprnode4 isa nullable AExpr
                                        var tkwdonode5 = nodearraylist9
                                        assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist10
-                                       assert pexprnode6 isa nullable PExpr
+                                       assert pexprnode6 isa nullable AExpr
                                        var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
                                                tkwfornode2,
                                                tidnode3,
                                                pexprnode4,
                                                tkwdonode5,
-                                               pexprnode6
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(92), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction587
+private class ReduceAction608
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -20932,18 +21035,18 @@ special ReduceAction
                                        var tkwassertnode2 = nodearraylist1
                                        assert tkwassertnode2 isa nullable TKwassert
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable PExpr
+                                       assert pexprnode4 isa nullable AExpr
                                        var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                null,
                                                pexprnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(96), node_list)
        end
 init do end
 end
-private class ReduceAction588
+private class ReduceAction609
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -20956,31 +21059,31 @@ special ReduceAction
                                        var tidnode3 = nodearraylist2
                                        assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable PExpr
+                                       assert pexprnode4 isa nullable AExpr
                                        var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                tidnode3,
                                                pexprnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(96), node_list)
        end
 init do end
 end
-private class ReduceAction589
+private class ReduceAction610
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
+                                       p.push(p.go_to(97), node_list)
        end
 init do end
 end
-private class ReduceAction590
+private class ReduceAction611
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -20994,7 +21097,7 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -21022,11 +21125,11 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
+                                       p.push(p.go_to(97), node_list)
        end
 init do end
 end
-private class ReduceAction591
+private class ReduceAction612
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21065,11 +21168,11 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
+                                       p.push(p.go_to(97), node_list)
        end
 init do end
 end
-private class ReduceAction592
+private class ReduceAction613
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21080,7 +21183,7 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
 #                                      if listnode3 != null then
@@ -21105,24 +21208,24 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
+                                       p.push(p.go_to(97), node_list)
        end
 init do end
 end
-private class ReduceAction593
+private class ReduceAction614
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(98), node_list)
        end
 init do end
 end
-private class ReduceAction594
+private class ReduceAction615
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21136,7 +21239,7 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -21164,11 +21267,11 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(98), node_list)
        end
 init do end
 end
-private class ReduceAction595
+private class ReduceAction616
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21207,24 +21310,24 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(98), node_list)
        end
 init do end
 end
-private class ReduceAction596
+private class ReduceAction617
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(96), node_list)
+                                       p.push(p.go_to(99), node_list)
        end
 init do end
 end
-private class ReduceAction597
+private class ReduceAction618
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21238,7 +21341,7 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -21266,11 +21369,11 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(96), node_list)
+                                       p.push(p.go_to(99), node_list)
        end
 init do end
 end
-private class ReduceAction598
+private class ReduceAction619
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21309,24 +21412,24 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(96), node_list)
+                                       p.push(p.go_to(99), node_list)
        end
 init do end
 end
-private class ReduceAction599
+private class ReduceAction620
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(97), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction600
+private class ReduceAction621
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21345,15 +21448,15 @@ special ReduceAction
                                        var tkwifnode2 = nodearraylist1
                                        assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var tkwthennode4 = nodearraylist5
                                        assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable PExpr
+                                       assert pexprnode5 isa nullable AExpr
                                        var tkwelsenode6 = nodearraylist9
                                        assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa nullable PExpr
+                                       assert pexprnode7 isa nullable AExpr
                                        var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
@@ -21363,24 +21466,24 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(97), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction601
+private class ReduceAction622
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(98), node_list)
+                                       p.push(p.go_to(101), node_list)
        end
 init do end
 end
-private class ReduceAction602
+private class ReduceAction623
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21390,19 +21493,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(98), node_list)
+                                       p.push(p.go_to(101), node_list)
        end
 init do end
 end
-private class ReduceAction603
+private class ReduceAction624
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21412,32 +21515,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(98), node_list)
+                                       p.push(p.go_to(101), node_list)
        end
 init do end
 end
-private class ReduceAction604
+private class ReduceAction625
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(99), node_list)
+                                       p.push(p.go_to(102), node_list)
        end
 init do end
 end
-private class ReduceAction605
+private class ReduceAction626
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21448,30 +21551,30 @@ special ReduceAction
                                        var tkwnotnode2 = nodearraylist1
                                        assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(99), node_list)
+                                       p.push(p.go_to(102), node_list)
        end
 init do end
 end
-private class ReduceAction606
+private class ReduceAction627
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction607
+private class ReduceAction628
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21481,19 +21584,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction608
+private class ReduceAction629
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21503,19 +21606,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction609
+private class ReduceAction630
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21525,19 +21628,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction610
+private class ReduceAction631
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21547,19 +21650,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction611
+private class ReduceAction632
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21569,19 +21672,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction612
+private class ReduceAction633
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21591,19 +21694,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction613
+private class ReduceAction634
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21613,19 +21716,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction614
+private class ReduceAction635
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21635,19 +21738,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction615
+private class ReduceAction636
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21657,32 +21760,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa nullable PType
+                                       assert ptypenode3 isa nullable AType
                                        var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction616
+private class ReduceAction637
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(101), node_list)
+                                       p.push(p.go_to(104), node_list)
        end
 init do end
 end
-private class ReduceAction617
+private class ReduceAction638
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21692,19 +21795,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(101), node_list)
+                                       p.push(p.go_to(104), node_list)
        end
 init do end
 end
-private class ReduceAction618
+private class ReduceAction639
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21714,32 +21817,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(101), node_list)
+                                       p.push(p.go_to(104), node_list)
        end
 init do end
 end
-private class ReduceAction619
+private class ReduceAction640
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(102), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction620
+private class ReduceAction641
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21749,19 +21852,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(102), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction621
+private class ReduceAction642
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21771,19 +21874,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(102), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction622
+private class ReduceAction643
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21793,32 +21896,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(102), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction623
+private class ReduceAction644
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(103), node_list)
+                                       p.push(p.go_to(106), node_list)
        end
 init do end
 end
-private class ReduceAction624
+private class ReduceAction645
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21829,17 +21932,17 @@ special ReduceAction
                                        var tminusnode2 = nodearraylist1
                                        assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(103), node_list)
+                                       p.push(p.go_to(106), node_list)
        end
 init do end
 end
-private class ReduceAction625
+private class ReduceAction646
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21850,30 +21953,30 @@ special ReduceAction
                                        var tkwoncenode2 = nodearraylist1
                                        assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(103), node_list)
+                                       p.push(p.go_to(106), node_list)
        end
 init do end
 end
-private class ReduceAction626
+private class ReduceAction647
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(104), node_list)
+                                       p.push(p.go_to(107), node_list)
        end
 init do end
 end
-private class ReduceAction627
+private class ReduceAction648
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21886,7 +21989,7 @@ special ReduceAction
                                        var tkwnewnode2 = nodearraylist1
                                        assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable PType
+                                       assert ptypenode3 isa nullable AType
                                        var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
 #                                      if listnode5 != null then
@@ -21903,11 +22006,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(104), node_list)
+                                       p.push(p.go_to(107), node_list)
        end
 init do end
 end
-private class ReduceAction628
+private class ReduceAction649
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21920,7 +22023,7 @@ special ReduceAction
                                        var tkwissetnode2 = nodearraylist1
                                        assert tkwissetnode2 isa nullable TKwisset
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var tattridnode4 = nodearraylist5
                                        assert tattridnode4 isa nullable TAttrid
                                        var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
@@ -21929,11 +22032,11 @@ special ReduceAction
                                                tattridnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(104), node_list)
+                                       p.push(p.go_to(107), node_list)
        end
 init do end
 end
-private class ReduceAction629
+private class ReduceAction650
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21952,11 +22055,11 @@ special ReduceAction
                                                tattridnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(104), node_list)
+                                       p.push(p.go_to(107), node_list)
        end
 init do end
 end
-private class ReduceAction630
+private class ReduceAction651
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21966,7 +22069,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tattridnode3 = nodearraylist4
                                        assert tattridnode3 isa nullable TAttrid
                                        var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
@@ -21974,11 +22077,11 @@ special ReduceAction
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction631
+private class ReduceAction652
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -21993,11 +22096,11 @@ special ReduceAction
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction632
+private class ReduceAction653
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22010,7 +22113,7 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -22029,11 +22132,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction633
+private class ReduceAction654
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22062,11 +22165,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction634
+private class ReduceAction655
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22091,11 +22194,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction635
+private class ReduceAction656
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22105,7 +22208,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable PQualified
+                                       assert pqualifiednode2 isa nullable AQualified
                                        var tkwsupernode3 = nodearraylist2
                                        assert tkwsupernode3 isa nullable TKwsuper
                                        var listnode4 = nodearraylist3
@@ -22123,11 +22226,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction636
+private class ReduceAction657
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22139,7 +22242,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tkwinitnode3 = nodearraylist4
                                        assert tkwinitnode3 isa nullable TKwinit
                                        var listnode4 = nodearraylist5
@@ -22157,11 +22260,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction637
+private class ReduceAction658
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22188,11 +22291,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction638
+private class ReduceAction659
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22208,7 +22311,7 @@ special ReduceAction
                                        var tkwnewnode2 = nodearraylist1
                                        assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable PType
+                                       assert ptypenode3 isa nullable AType
                                        var tidnode4 = nodearraylist6
                                        assert tidnode4 isa nullable TId
                                        var listnode5 = nodearraylist7
@@ -22227,11 +22330,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction639
+private class ReduceAction660
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22243,11 +22346,11 @@ special ReduceAction
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction640
+private class ReduceAction661
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22259,11 +22362,11 @@ special ReduceAction
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction641
+private class ReduceAction662
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22275,11 +22378,11 @@ special ReduceAction
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction642
+private class ReduceAction663
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22291,11 +22394,11 @@ special ReduceAction
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction643
+private class ReduceAction664
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22307,11 +22410,11 @@ special ReduceAction
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction644
+private class ReduceAction665
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22323,11 +22426,11 @@ special ReduceAction
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction645
+private class ReduceAction666
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22339,11 +22442,11 @@ special ReduceAction
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction646
+private class ReduceAction667
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22355,24 +22458,24 @@ special ReduceAction
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction647
+private class ReduceAction668
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction648
+private class ReduceAction669
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22388,22 +22491,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tkwasnode3 = nodearraylist4
                                        assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa nullable PType
+                                       assert ptypenode4 isa nullable AType
                                        var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction649
+private class ReduceAction670
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22421,7 +22524,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tkwasnode3 = nodearraylist4
                                        assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
@@ -22435,24 +22538,24 @@ special ReduceAction
                                                tkwnullnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction650
+private class ReduceAction671
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(106), node_list)
+                                       p.push(p.go_to(109), node_list)
        end
 init do end
 end
-private class ReduceAction651
+private class ReduceAction672
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22466,7 +22569,7 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -22494,11 +22597,11 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(106), node_list)
+                                       p.push(p.go_to(109), node_list)
        end
 init do end
 end
-private class ReduceAction652
+private class ReduceAction673
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22537,24 +22640,24 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(106), node_list)
+                                       p.push(p.go_to(109), node_list)
        end
 init do end
 end
-private class ReduceAction653
+private class ReduceAction674
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(107), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction654
+private class ReduceAction675
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22573,15 +22676,15 @@ special ReduceAction
                                        var tkwifnode2 = nodearraylist1
                                        assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var tkwthennode4 = nodearraylist5
                                        assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable PExpr
+                                       assert pexprnode5 isa nullable AExpr
                                        var tkwelsenode6 = nodearraylist9
                                        assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa nullable PExpr
+                                       assert pexprnode7 isa nullable AExpr
                                        var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
@@ -22591,24 +22694,24 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(107), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction655
+private class ReduceAction676
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(108), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction656
+private class ReduceAction677
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22618,19 +22721,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(108), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction657
+private class ReduceAction678
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22640,32 +22743,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(108), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction658
+private class ReduceAction679
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(109), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction659
+private class ReduceAction680
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22676,30 +22779,30 @@ special ReduceAction
                                        var tkwnotnode2 = nodearraylist1
                                        assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(109), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction660
+private class ReduceAction681
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction661
+private class ReduceAction682
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22709,19 +22812,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction662
+private class ReduceAction683
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22731,19 +22834,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction663
+private class ReduceAction684
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22753,19 +22856,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction664
+private class ReduceAction685
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22775,19 +22878,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction665
+private class ReduceAction686
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22797,19 +22900,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction666
+private class ReduceAction687
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22819,19 +22922,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction667
+private class ReduceAction688
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22841,19 +22944,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction668
+private class ReduceAction689
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22863,19 +22966,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction669
+private class ReduceAction690
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22885,32 +22988,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa nullable PType
+                                       assert ptypenode3 isa nullable AType
                                        var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction670
+private class ReduceAction691
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(114), node_list)
        end
 init do end
 end
-private class ReduceAction671
+private class ReduceAction692
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22920,19 +23023,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(114), node_list)
        end
 init do end
 end
-private class ReduceAction672
+private class ReduceAction693
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22942,32 +23045,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(114), node_list)
        end
 init do end
 end
-private class ReduceAction673
+private class ReduceAction694
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction674
+private class ReduceAction695
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22977,19 +23080,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction675
+private class ReduceAction696
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -22999,19 +23102,19 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction676
+private class ReduceAction697
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23021,32 +23124,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction677
+private class ReduceAction698
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(116), node_list)
        end
 init do end
 end
-private class ReduceAction678
+private class ReduceAction699
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23057,17 +23160,17 @@ special ReduceAction
                                        var tminusnode2 = nodearraylist1
                                        assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(116), node_list)
        end
 init do end
 end
-private class ReduceAction679
+private class ReduceAction700
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23078,30 +23181,30 @@ special ReduceAction
                                        var tkwoncenode2 = nodearraylist1
                                        assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(116), node_list)
        end
 init do end
 end
-private class ReduceAction680
+private class ReduceAction701
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(114), node_list)
+                                       p.push(p.go_to(117), node_list)
        end
 init do end
 end
-private class ReduceAction681
+private class ReduceAction702
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23114,7 +23217,7 @@ special ReduceAction
                                        var tkwnewnode2 = nodearraylist1
                                        assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable PType
+                                       assert ptypenode3 isa nullable AType
                                        var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
 #                                      if listnode5 != null then
@@ -23131,11 +23234,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(114), node_list)
+                                       p.push(p.go_to(117), node_list)
        end
 init do end
 end
-private class ReduceAction682
+private class ReduceAction703
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23146,7 +23249,7 @@ special ReduceAction
                                        var tkwissetnode2 = nodearraylist1
                                        assert tkwissetnode2 isa nullable TKwisset
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable PExpr
+                                       assert pexprnode3 isa nullable AExpr
                                        var tattridnode4 = nodearraylist3
                                        assert tattridnode4 isa nullable TAttrid
                                        var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
@@ -23155,11 +23258,11 @@ special ReduceAction
                                                tattridnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(114), node_list)
+                                       p.push(p.go_to(117), node_list)
        end
 init do end
 end
-private class ReduceAction683
+private class ReduceAction704
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23167,7 +23270,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tattridnode3 = nodearraylist2
                                        assert tattridnode3 isa nullable TAttrid
                                        var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
@@ -23175,11 +23278,11 @@ special ReduceAction
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction684
+private class ReduceAction705
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23190,7 +23293,7 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist2
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist3
@@ -23209,11 +23312,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction685
+private class ReduceAction706
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23238,11 +23341,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction686
+private class ReduceAction707
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23252,7 +23355,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable PQualified
+                                       assert pqualifiednode2 isa nullable AQualified
                                        var tkwsupernode3 = nodearraylist2
                                        assert tkwsupernode3 isa nullable TKwsuper
                                        var listnode4 = nodearraylist3
@@ -23270,11 +23373,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction687
+private class ReduceAction708
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23284,7 +23387,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tkwinitnode3 = nodearraylist2
                                        assert tkwinitnode3 isa nullable TKwinit
                                        var listnode4 = nodearraylist3
@@ -23302,11 +23405,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction688
+private class ReduceAction709
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23322,7 +23425,7 @@ special ReduceAction
                                        var tkwnewnode2 = nodearraylist1
                                        assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable PType
+                                       assert ptypenode3 isa nullable AType
                                        var tidnode4 = nodearraylist6
                                        assert tidnode4 isa nullable TId
                                        var listnode5 = nodearraylist7
@@ -23341,11 +23444,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction689
+private class ReduceAction710
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23357,11 +23460,11 @@ special ReduceAction
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction690
+private class ReduceAction711
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23373,11 +23476,11 @@ special ReduceAction
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction691
+private class ReduceAction712
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23389,11 +23492,11 @@ special ReduceAction
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction692
+private class ReduceAction713
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23405,11 +23508,11 @@ special ReduceAction
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction693
+private class ReduceAction714
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23421,11 +23524,11 @@ special ReduceAction
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction694
+private class ReduceAction715
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23437,11 +23540,11 @@ special ReduceAction
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction695
+private class ReduceAction716
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23453,11 +23556,11 @@ special ReduceAction
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction696
+private class ReduceAction717
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23469,24 +23572,24 @@ special ReduceAction
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction697
+private class ReduceAction718
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction698
+private class ReduceAction719
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23502,22 +23605,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tkwasnode3 = nodearraylist4
                                        assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa nullable PType
+                                       assert ptypenode4 isa nullable AType
                                        var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction699
+private class ReduceAction720
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23535,7 +23638,7 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tkwasnode3 = nodearraylist4
                                        assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
@@ -23549,11 +23652,11 @@ special ReduceAction
                                                tkwnullnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction700
+private class ReduceAction721
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23562,13 +23665,13 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(119), node_list)
        end
 init do end
 end
-private class ReduceAction701
+private class ReduceAction722
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23576,24 +23679,24 @@ special ReduceAction
                                        var pexprnode1: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(119), node_list)
        end
 init do end
 end
-private class ReduceAction702
+private class ReduceAction723
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(117), node_list)
+                                       p.push(p.go_to(120), node_list)
        end
 init do end
 end
-private class ReduceAction703
+private class ReduceAction724
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23607,7 +23710,7 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -23635,11 +23738,11 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(117), node_list)
+                                       p.push(p.go_to(120), node_list)
        end
 init do end
 end
-private class ReduceAction704
+private class ReduceAction725
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23678,24 +23781,24 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(117), node_list)
+                                       p.push(p.go_to(120), node_list)
        end
 init do end
 end
-private class ReduceAction705
+private class ReduceAction726
 special ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(118), node_list)
+                                       p.push(p.go_to(121), node_list)
        end
 init do end
 end
-private class ReduceAction706
+private class ReduceAction727
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23709,7 +23812,7 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var listnode4 = nodearraylist5
@@ -23737,11 +23840,11 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(118), node_list)
+                                       p.push(p.go_to(121), node_list)
        end
 init do end
 end
-private class ReduceAction707
+private class ReduceAction728
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23780,11 +23883,11 @@ special ReduceAction
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(118), node_list)
+                                       p.push(p.go_to(121), node_list)
        end
 init do end
 end
-private class ReduceAction708
+private class ReduceAction729
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23792,16 +23895,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pimportnode1 = nodearraylist1
-                                       assert pimportnode1 isa nullable PImport
+                                       assert pimportnode1 isa nullable AImport
                                        if pimportnode1 != null then
                                                listnode2.add(pimportnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(119), node_list)
+                                       p.push(p.go_to(122), node_list)
        end
 init do end
 end
-private class ReduceAction709
+private class ReduceAction730
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23812,7 +23915,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pimportnode2 = nodearraylist2
-                                       assert pimportnode2 isa nullable PImport
+                                       assert pimportnode2 isa nullable AImport
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -23824,11 +23927,11 @@ special ReduceAction
                                                listnode3.add(pimportnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(119), node_list)
+                                       p.push(p.go_to(122), node_list)
        end
 init do end
 end
-private class ReduceAction710
+private class ReduceAction731
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23836,16 +23939,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclassdefnode1 = nodearraylist1
-                                       assert pclassdefnode1 isa nullable PClassdef
+                                       assert pclassdefnode1 isa nullable AClassdef
                                        if pclassdefnode1 != null then
                                                listnode2.add(pclassdefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(120), node_list)
+                                       p.push(p.go_to(123), node_list)
        end
 init do end
 end
-private class ReduceAction711
+private class ReduceAction732
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23856,7 +23959,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pclassdefnode2 = nodearraylist2
-                                       assert pclassdefnode2 isa nullable PClassdef
+                                       assert pclassdefnode2 isa nullable AClassdef
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -23868,11 +23971,11 @@ special ReduceAction
                                                listnode3.add(pclassdefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(120), node_list)
+                                       p.push(p.go_to(123), node_list)
        end
 init do end
 end
-private class ReduceAction712
+private class ReduceAction733
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23880,16 +23983,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var psuperclassnode1 = nodearraylist1
-                                       assert psuperclassnode1 isa nullable PSuperclass
+                                       assert psuperclassnode1 isa nullable ASuperclass
                                        if psuperclassnode1 != null then
                                                listnode2.add(psuperclassnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(121), node_list)
+                                       p.push(p.go_to(124), node_list)
        end
 init do end
 end
-private class ReduceAction713
+private class ReduceAction734
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23900,7 +24003,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var psuperclassnode2 = nodearraylist2
-                                       assert psuperclassnode2 isa nullable PSuperclass
+                                       assert psuperclassnode2 isa nullable ASuperclass
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -23912,11 +24015,11 @@ special ReduceAction
                                                listnode3.add(psuperclassnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(121), node_list)
+                                       p.push(p.go_to(124), node_list)
        end
 init do end
 end
-private class ReduceAction714
+private class ReduceAction735
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23924,16 +24027,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist1
-                                       assert pformaldefnode1 isa nullable PFormaldef
+                                       assert pformaldefnode1 isa nullable AFormaldef
                                        if pformaldefnode1 != null then
                                                listnode2.add(pformaldefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(122), node_list)
+                                       p.push(p.go_to(125), node_list)
        end
 init do end
 end
-private class ReduceAction715
+private class ReduceAction736
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23944,7 +24047,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pformaldefnode2 = nodearraylist2
-                                       assert pformaldefnode2 isa nullable PFormaldef
+                                       assert pformaldefnode2 isa nullable AFormaldef
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -23956,11 +24059,11 @@ special ReduceAction
                                                listnode3.add(pformaldefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(122), node_list)
+                                       p.push(p.go_to(125), node_list)
        end
 init do end
 end
-private class ReduceAction716
+private class ReduceAction737
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23968,16 +24071,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa nullable PPropdef
+                                       assert ppropdefnode1 isa nullable APropdef
                                        if ppropdefnode1 != null then
                                                listnode2.add(ppropdefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(123), node_list)
+                                       p.push(p.go_to(126), node_list)
        end
 init do end
 end
-private class ReduceAction717
+private class ReduceAction738
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -23988,7 +24091,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var ppropdefnode2 = nodearraylist2
-                                       assert ppropdefnode2 isa nullable PPropdef
+                                       assert ppropdefnode2 isa nullable APropdef
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -24000,11 +24103,11 @@ special ReduceAction
                                                listnode3.add(ppropdefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(123), node_list)
+                                       p.push(p.go_to(126), node_list)
        end
 init do end
 end
-private class ReduceAction718
+private class ReduceAction739
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24012,16 +24115,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pparamnode1 = nodearraylist1
-                                       assert pparamnode1 isa nullable PParam
+                                       assert pparamnode1 isa nullable AParam
                                        if pparamnode1 != null then
                                                listnode2.add(pparamnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(124), node_list)
+                                       p.push(p.go_to(127), node_list)
        end
 init do end
 end
-private class ReduceAction719
+private class ReduceAction740
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24032,7 +24135,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pparamnode2 = nodearraylist2
-                                       assert pparamnode2 isa nullable PParam
+                                       assert pparamnode2 isa nullable AParam
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -24044,11 +24147,11 @@ special ReduceAction
                                                listnode3.add(pparamnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(124), node_list)
+                                       p.push(p.go_to(127), node_list)
        end
 init do end
 end
-private class ReduceAction720
+private class ReduceAction741
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24056,16 +24159,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclosuredeclnode1 = nodearraylist1
-                                       assert pclosuredeclnode1 isa nullable PClosureDecl
+                                       assert pclosuredeclnode1 isa nullable AClosureDecl
                                        if pclosuredeclnode1 != null then
                                                listnode2.add(pclosuredeclnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(125), node_list)
+                                       p.push(p.go_to(128), node_list)
        end
 init do end
 end
-private class ReduceAction721
+private class ReduceAction742
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24076,7 +24179,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pclosuredeclnode2 = nodearraylist2
-                                       assert pclosuredeclnode2 isa nullable PClosureDecl
+                                       assert pclosuredeclnode2 isa nullable AClosureDecl
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -24088,11 +24191,11 @@ special ReduceAction
                                                listnode3.add(pclosuredeclnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(125), node_list)
+                                       p.push(p.go_to(128), node_list)
        end
 init do end
 end
-private class ReduceAction722
+private class ReduceAction743
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24100,16 +24203,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa nullable PType
+                                       assert ptypenode1 isa nullable AType
                                        if ptypenode1 != null then
                                                listnode2.add(ptypenode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(126), node_list)
+                                       p.push(p.go_to(129), node_list)
        end
 init do end
 end
-private class ReduceAction723
+private class ReduceAction744
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24120,7 +24223,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var ptypenode2 = nodearraylist2
-                                       assert ptypenode2 isa nullable PType
+                                       assert ptypenode2 isa nullable AType
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -24132,11 +24235,11 @@ special ReduceAction
                                                listnode3.add(ptypenode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(126), node_list)
+                                       p.push(p.go_to(129), node_list)
        end
 init do end
 end
-private class ReduceAction724
+private class ReduceAction745
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24144,16 +24247,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(127), node_list)
+                                       p.push(p.go_to(130), node_list)
        end
 init do end
 end
-private class ReduceAction725
+private class ReduceAction746
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24164,7 +24267,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -24176,11 +24279,11 @@ special ReduceAction
                                                listnode3.add(pexprnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(127), node_list)
+                                       p.push(p.go_to(130), node_list)
        end
 init do end
 end
-private class ReduceAction726
+private class ReduceAction747
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24197,11 +24300,11 @@ special ReduceAction
                                                end
 #                                      end
                                        node_list = listnode2
-                                       p.push(p.go_to(128), node_list)
+                                       p.push(p.go_to(131), node_list)
        end
 init do end
 end
-private class ReduceAction727
+private class ReduceAction748
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24228,11 +24331,11 @@ special ReduceAction
                                                end
 #                                      end
                                        node_list = listnode3
-                                       p.push(p.go_to(128), node_list)
+                                       p.push(p.go_to(131), node_list)
        end
 init do end
 end
-private class ReduceAction728
+private class ReduceAction749
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24240,16 +24343,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa nullable PExpr
+                                       assert pexprnode1 isa nullable AExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(129), node_list)
+                                       p.push(p.go_to(132), node_list)
        end
 init do end
 end
-private class ReduceAction729
+private class ReduceAction750
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24260,7 +24363,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa nullable PExpr
+                                       assert pexprnode2 isa nullable AExpr
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -24272,11 +24375,11 @@ special ReduceAction
                                                listnode3.add(pexprnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(129), node_list)
+                                       p.push(p.go_to(132), node_list)
        end
 init do end
 end
-private class ReduceAction730
+private class ReduceAction751
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24289,11 +24392,11 @@ special ReduceAction
                                                listnode2.add(tidnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(130), node_list)
+                                       p.push(p.go_to(133), node_list)
        end
 init do end
 end
-private class ReduceAction731
+private class ReduceAction752
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24316,11 +24419,11 @@ special ReduceAction
                                                listnode3.add(tidnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(130), node_list)
+                                       p.push(p.go_to(133), node_list)
        end
 init do end
 end
-private class ReduceAction732
+private class ReduceAction753
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24333,11 +24436,11 @@ special ReduceAction
                                                listnode2.add(tcommentnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(131), node_list)
+                                       p.push(p.go_to(134), node_list)
        end
 init do end
 end
-private class ReduceAction733
+private class ReduceAction754
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24360,11 +24463,11 @@ special ReduceAction
                                                listnode3.add(tcommentnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(131), node_list)
+                                       p.push(p.go_to(134), node_list)
        end
 init do end
 end
-private class ReduceAction734
+private class ReduceAction755
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24377,11 +24480,11 @@ special ReduceAction
                                                listnode2.add(teolnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(132), node_list)
+                                       p.push(p.go_to(135), node_list)
        end
 init do end
 end
-private class ReduceAction735
+private class ReduceAction756
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24404,11 +24507,11 @@ special ReduceAction
                                                listnode3.add(teolnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(132), node_list)
+                                       p.push(p.go_to(135), node_list)
        end
 init do end
 end
-private class ReduceAction736
+private class ReduceAction757
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24416,16 +24519,16 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa nullable PPropdef
+                                       assert ppropdefnode1 isa nullable APropdef
                                        if ppropdefnode1 != null then
                                                listnode2.add(ppropdefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(133), node_list)
+                                       p.push(p.go_to(136), node_list)
        end
 init do end
 end
-private class ReduceAction737
+private class ReduceAction758
 special ReduceAction
        redef fun action(p: Parser)
        do
@@ -24436,7 +24539,7 @@ special ReduceAction
                                        var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var ppropdefnode2 = nodearraylist2
-                                       assert ppropdefnode2 isa nullable PPropdef
+                                       assert ppropdefnode2 isa nullable APropdef
 #                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -24448,7 +24551,7 @@ special ReduceAction
                                                listnode3.add(ppropdefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(133), node_list)
+                                       p.push(p.go_to(136), node_list)
        end
 init do end
 end