nullable: convert lib, tools and tests
[nit.git] / src / parser / parser.nit
index 78d4659..965e0fb 100644 (file)
@@ -11,9 +11,9 @@ private class State
        readable writable attr _state: Int
 
        # The node stored with the state in the stack
-       readable writable attr _nodes: Object 
+       readable writable attr _nodes: nullable Object 
 
-       init(state: Int, nodes: Object)
+       init(state: Int, nodes: nullable Object)
        do
                _state = state
                _nodes = nodes
@@ -67,7 +67,7 @@ special ParserTable
        end
 
        # Push someting in the state stack
-       private meth push(numstate: Int, list_node: Object)
+       private meth push(numstate: Int, list_node: nullable Object)
        do
                var pos = _stack_pos + 1
                _stack_pos = pos
@@ -87,7 +87,7 @@ special ParserTable
        end
 
        # Pop something from the stack state
-       private meth pop: Object
+       private meth pop: nullable Object
        do
                var res = _stack[_stack_pos].nodes
                _stack_pos = _stack_pos -1
@@ -99,7 +99,6 @@ special ParserTable
        do
                push(0, null)
 
-               var ign: List[Token] = null
                var lexer = _lexer
                while true do
                        var token = lexer.peek
@@ -107,7 +106,6 @@ special ParserTable
                        var last_line = token.line
 
                        if token isa PError then
-                               assert token isa PError
                                return new Start(null, token)
                        end
 
@@ -152,7 +150,7 @@ special ParserTable
                                return node
                        end
                end
-               return null
+               abort
        end
 
        attr _reduce_table: Array[ReduceAction]
@@ -896,94 +894,7 @@ special ParserTable
                        new ReduceAction734,
                        new ReduceAction735,
                        new ReduceAction736,
-                       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,
-                       new ReduceAction759,
-                       new ReduceAction760,
-                       new ReduceAction761,
-                       new ReduceAction762,
-                       new ReduceAction763,
-                       new ReduceAction764,
-                       new ReduceAction765,
-                       new ReduceAction766,
-                       new ReduceAction767,
-                       new ReduceAction768,
-                       new ReduceAction769,
-                       new ReduceAction770,
-                       new ReduceAction771,
-                       new ReduceAction772,
-                       new ReduceAction773,
-                       new ReduceAction774,
-                       new ReduceAction775,
-                       new ReduceAction776,
-                       new ReduceAction777,
-                       new ReduceAction778,
-                       new ReduceAction779,
-                       new ReduceAction780,
-                       new ReduceAction781,
-                       new ReduceAction782,
-                       new ReduceAction783,
-                       new ReduceAction784,
-                       new ReduceAction785,
-                       new ReduceAction786,
-                       new ReduceAction787,
-                       new ReduceAction788,
-                       new ReduceAction789,
-                       new ReduceAction790,
-                       new ReduceAction791,
-                       new ReduceAction792,
-                       new ReduceAction793,
-                       new ReduceAction794,
-                       new ReduceAction795,
-                       new ReduceAction796,
-                       new ReduceAction797,
-                       new ReduceAction798,
-                       new ReduceAction799,
-                       new ReduceAction800,
-                       new ReduceAction801,
-                       new ReduceAction802,
-                       new ReduceAction803,
-                       new ReduceAction804,
-                       new ReduceAction805,
-                       new ReduceAction806,
-                       new ReduceAction807,
-                       new ReduceAction808,
-                       new ReduceAction809,
-                       new ReduceAction810,
-                       new ReduceAction811,
-                       new ReduceAction812,
-                       new ReduceAction813,
-                       new ReduceAction814,
-                       new ReduceAction815,
-                       new ReduceAction816,
-                       new ReduceAction817,
-                       new ReduceAction818,
-                       new ReduceAction819,
-                       new ReduceAction820,
-                       new ReduceAction821,
-                       new ReduceAction822,
-                       new ReduceAction823,
-                       new ReduceAction824
+                       new ReduceAction737
                )
        end
 end
@@ -992,11 +903,12 @@ end
 private class SearchTokensVisitor
 special Visitor
        attr _untokenned_nodes: Array[Prod]
-       attr _last_token: Token
-       redef meth visit(n: PNode)
+       attr _last_token: nullable Token = null
+       redef meth visit(n: nullable PNode)
        do
-               if n isa Token then
-                       assert n isa Token
+               if n == null then
+                       return
+               else if n isa Token then
                        _last_token = n
                        for no in _untokenned_nodes do
                                no.first_token = n
@@ -1024,10 +936,10 @@ private class ReduceAction0
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var listnode3 = new Array[Object]
                                        var listnode4 = new Array[Object]
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode4
@@ -1041,13 +953,13 @@ private class ReduceAction1
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode4 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode4
@@ -1061,20 +973,20 @@ private class ReduceAction2
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode5
@@ -1088,23 +1000,23 @@ private class ReduceAction3
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode5
@@ -1118,20 +1030,20 @@ private class ReduceAction4
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode5
@@ -1145,23 +1057,23 @@ private class ReduceAction5
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode5
@@ -1175,30 +1087,30 @@ private class ReduceAction6
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode6
@@ -1212,33 +1124,33 @@ private class ReduceAction7
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode6
@@ -1252,24 +1164,24 @@ private class ReduceAction8
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa PPropdef
+                                       assert ppropdefnode5 isa nullable PPropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode6
                                        )
                                        if pclassdefnode4 != null then
                                                listnode7.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode7
@@ -1283,7 +1195,7 @@ private class ReduceAction9
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -1291,26 +1203,26 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa PPropdef
-                                       var listnode6 = nodearraylist3 
+                                       assert ppropdefnode5 isa nullable PPropdef
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
                                                listnode7.add(ppropdefnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode8
@@ -1324,27 +1236,27 @@ private class ReduceAction10
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa PPropdef
+                                       assert ppropdefnode5 isa nullable PPropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode6
                                        )
                                        if pclassdefnode4 != null then
                                                listnode7.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode7
@@ -1358,7 +1270,7 @@ private class ReduceAction11
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -1366,29 +1278,29 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa PPropdef
-                                       var listnode6 = nodearraylist4 
+                                       assert ppropdefnode5 isa nullable PPropdef
+                                       var listnode6 = nodearraylist4
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
                                                listnode7.add(ppropdefnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -1402,34 +1314,34 @@ private class ReduceAction12
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode8 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode8
@@ -1443,44 +1355,44 @@ private class ReduceAction13
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist4 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode9
@@ -1494,7 +1406,7 @@ private class ReduceAction14
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -1502,29 +1414,29 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode8
@@ -1538,7 +1450,7 @@ private class ReduceAction15
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -1547,38 +1459,38 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist5 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -1592,34 +1504,34 @@ private class ReduceAction16
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode4
                                                else
                                                        listnode8.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode8
@@ -1633,44 +1545,44 @@ private class ReduceAction17
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist4 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode9
@@ -1684,7 +1596,7 @@ private class ReduceAction18
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -1692,29 +1604,29 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode4
                                                else
                                                        listnode8.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -1728,7 +1640,7 @@ private class ReduceAction19
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -1737,38 +1649,38 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist5 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -1782,44 +1694,44 @@ private class ReduceAction20
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa PPropdef
+                                       assert ppropdefnode7 isa nullable PPropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode5
                                                else
                                                        listnode9.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode9.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode9
@@ -1833,7 +1745,7 @@ private class ReduceAction21
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -1841,46 +1753,46 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa PPropdef
-                                       var listnode8 = nodearraylist5 
+                                       assert ppropdefnode7 isa nullable PPropdef
+                                       var listnode8 = nodearraylist5
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
                                                listnode9.add(ppropdefnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode9
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode10
@@ -1894,7 +1806,7 @@ private class ReduceAction22
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -1903,38 +1815,38 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa PPropdef
+                                       assert ppropdefnode7 isa nullable PPropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode5
                                                else
                                                        listnode9.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode9.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -1948,7 +1860,7 @@ private class ReduceAction23
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -1958,47 +1870,47 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa PPropdef
-                                       var listnode8 = nodearraylist6 
+                                       assert ppropdefnode7 isa nullable PPropdef
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
                                                listnode9.add(ppropdefnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode9
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -2012,16 +1924,16 @@ private class ReduceAction24
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var pclassdefnode4 = nodearraylist1
-                                       assert pclassdefnode4 isa PClassdef
+                                       assert pclassdefnode4 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode5.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode5
@@ -2035,19 +1947,19 @@ private class ReduceAction25
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var pclassdefnode4 = nodearraylist2
-                                       assert pclassdefnode4 isa PClassdef
+                                       assert pclassdefnode4 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode5.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode5
@@ -2061,26 +1973,26 @@ private class ReduceAction26
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa PClassdef
+                                       assert pclassdefnode5 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode6
@@ -2094,29 +2006,29 @@ private class ReduceAction27
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa PClassdef
+                                       assert pclassdefnode5 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode6
@@ -2130,26 +2042,26 @@ private class ReduceAction28
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode5 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode4
                                                else
                                                        listnode6.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode6
@@ -2163,29 +2075,29 @@ private class ReduceAction29
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode5 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode4
                                                else
                                                        listnode6.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode6
@@ -2199,36 +2111,36 @@ private class ReduceAction30
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var pclassdefnode6 = nodearraylist3
-                                       assert pclassdefnode6 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode6 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode5
                                                else
                                                        listnode7.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode7.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode7
@@ -2242,7 +2154,7 @@ private class ReduceAction31
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -2250,31 +2162,31 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var pclassdefnode6 = nodearraylist4
-                                       assert pclassdefnode6 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode6 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode5
                                                else
                                                        listnode7.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode7.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode7
@@ -2288,7 +2200,7 @@ private class ReduceAction32
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -2296,22 +2208,22 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa PPropdef
+                                       assert ppropdefnode5 isa nullable PPropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode6
                                        )
                                        var pclassdefnode7 = nodearraylist3
-                                       assert pclassdefnode7 isa PClassdef
+                                       assert pclassdefnode7 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
                                        if pclassdefnode7 != null then
                                                listnode8.add(pclassdefnode7)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode8
@@ -2325,7 +2237,7 @@ private class ReduceAction33
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -2334,31 +2246,31 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa PPropdef
-                                       var listnode6 = nodearraylist3 
+                                       assert ppropdefnode5 isa nullable PPropdef
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
                                                listnode7.add(ppropdefnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa PClassdef
+                                       assert pclassdefnode8 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode9.add(pclassdefnode4)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode9
@@ -2372,7 +2284,7 @@ private class ReduceAction34
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -2380,25 +2292,25 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa PPropdef
+                                       assert ppropdefnode5 isa nullable PPropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode6
                                        )
                                        var pclassdefnode7 = nodearraylist4
-                                       assert pclassdefnode7 isa PClassdef
+                                       assert pclassdefnode7 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
                                        if pclassdefnode7 != null then
                                                listnode8.add(pclassdefnode7)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -2412,7 +2324,7 @@ private class ReduceAction35
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2421,34 +2333,34 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa PPropdef
-                                       var listnode6 = nodearraylist4 
+                                       assert ppropdefnode5 isa nullable PPropdef
+                                       var listnode6 = nodearraylist4
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
                                                listnode7.add(ppropdefnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa PClassdef
+                                       assert pclassdefnode8 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode9.add(pclassdefnode4)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -2462,40 +2374,40 @@ private class ReduceAction36
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa PClassdef
+                                       assert pclassdefnode8 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode9
@@ -2509,7 +2421,7 @@ private class ReduceAction37
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2517,42 +2429,42 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist4 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa PClassdef
+                                       assert pclassdefnode9 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode10
@@ -2566,7 +2478,7 @@ private class ReduceAction38
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2575,34 +2487,34 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa PClassdef
+                                       assert pclassdefnode8 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -2616,7 +2528,7 @@ private class ReduceAction39
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -2626,43 +2538,43 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist5 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa PClassdef
+                                       assert pclassdefnode9 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -2676,40 +2588,40 @@ private class ReduceAction40
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode8 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode9
@@ -2723,7 +2635,7 @@ private class ReduceAction41
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2731,42 +2643,42 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist4 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode9 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode4
                                                else
                                                        listnode10.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode10
@@ -2780,7 +2692,7 @@ private class ReduceAction42
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2789,34 +2701,34 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode8 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -2830,7 +2742,7 @@ private class ReduceAction43
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -2840,43 +2752,43 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist5 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode9 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode4
                                                else
                                                        listnode10.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode10
@@ -2890,7 +2802,7 @@ private class ReduceAction44
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2898,42 +2810,42 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa PPropdef
+                                       assert ppropdefnode7 isa nullable PPropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode9 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode10
@@ -2947,7 +2859,7 @@ private class ReduceAction45
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -2956,51 +2868,51 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode11 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa PPropdef
-                                       var listnode8 = nodearraylist5 
+                                       assert ppropdefnode7 isa nullable PPropdef
+                                       var listnode8 = nodearraylist5
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
                                                listnode9.add(ppropdefnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode9
                                        )
                                        var pclassdefnode10 = nodearraylist6
-                                       assert pclassdefnode10 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode10 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode5
                                                else
                                                        listnode11.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode11.add(pclassdefnode6)
                                        end
                                        if pclassdefnode10 != null then
                                                listnode11.add(pclassdefnode10)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode11
@@ -3014,7 +2926,7 @@ private class ReduceAction46
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -3024,43 +2936,43 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa PPropdef
+                                       assert ppropdefnode7 isa nullable PPropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode9 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -3074,7 +2986,7 @@ private class ReduceAction47
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3085,52 +2997,52 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa PPropdef
-                                       var listnode8 = nodearraylist6 
+                                       assert ppropdefnode7 isa nullable PPropdef
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
                                                listnode9.add(ppropdefnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode9
                                        )
                                        var pclassdefnode10 = nodearraylist7
-                                       assert pclassdefnode10 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode10 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode5
                                                else
                                                        listnode11.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode11.add(pclassdefnode6)
                                        end
                                        if pclassdefnode10 != null then
                                                listnode11.add(pclassdefnode10)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode11
@@ -3144,19 +3056,19 @@ private class ReduceAction48
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwpackagenode3 = nodearraylist2
-                                       assert tkwpackagenode3 isa TKwpackage
+                                       assert tkwpackagenode3 isa nullable TKwpackage
                                        var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa TId
-                                       var ppackagedeclnode1 = new APackagedecl.init_apackagedecl(
+                                       assert tidnode4 isa nullable TId
+                                       var ppackagedeclnode1: nullable APackagedecl = new APackagedecl.init_apackagedecl(
                                                pdocnode2,
                                                tkwpackagenode3,
                                                tidnode4
@@ -3170,7 +3082,7 @@ private class ReduceAction49
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -3178,12 +3090,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa PVisibility
+                                       assert pvisibilitynode2 isa nullable PVisibility
                                        var tkwimportnode3 = nodearraylist3
-                                       assert tkwimportnode3 isa TKwimport
+                                       assert tkwimportnode3 isa nullable TKwimport
                                        var tidnode4 = nodearraylist5
-                                       assert tidnode4 isa TId
-                                       var pimportnode1 = new AImport.init_aimport(
+                                       assert tidnode4 isa nullable TId
+                                       var pimportnode1: nullable AImport = new AImport.init_aimport(
                                                pvisibilitynode2,
                                                tkwimportnode3,
                                                tidnode4
@@ -3197,7 +3109,7 @@ private class ReduceAction50
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -3205,12 +3117,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa PVisibility
+                                       assert pvisibilitynode2 isa nullable PVisibility
                                        var tkwimportnode3 = nodearraylist3
-                                       assert tkwimportnode3 isa TKwimport
+                                       assert tkwimportnode3 isa nullable TKwimport
                                        var tkwendnode4 = nodearraylist5
-                                       assert tkwendnode4 isa TKwend
-                                       var pimportnode1 = new ANoImport.init_anoimport(
+                                       assert tkwendnode4 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
                                                pvisibilitynode2,
                                                tkwimportnode3,
                                                tkwendnode4
@@ -3224,15 +3136,15 @@ private class ReduceAction51
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var ppropdefnode2 = nodearraylist1
-                                       assert ppropdefnode2 isa PPropdef
+                                       assert ppropdefnode2 isa nullable PPropdef
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        end
-                                       var pclassdefnode1 = new AMainClassdef.init_amainclassdef(
+                                       var pclassdefnode1: nullable AMainClassdef = new AMainClassdef.init_amainclassdef(
                                                listnode3
                                        )
                                        node_list = pclassdefnode1
@@ -3244,7 +3156,7 @@ private class ReduceAction52
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        node_list = null
                                        p.push(p.go_to(3), node_list)
@@ -3255,20 +3167,20 @@ private class ReduceAction53
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        if pexprnode4 != null then
                                                listnode5.add(pexprnode4)
                                        end
-                                       var pexprnode3 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode5
                                        )
-                                       var ppropdefnode1 = new AMainMethPropdef.init_amainmethpropdef(
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
                                                pexprnode3
                                        )
@@ -3281,30 +3193,30 @@ private class ReduceAction54
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
-                                       var listnode5 = nodearraylist3 
+                                       assert pexprnode4 isa nullable PExpr
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        if pexprnode4 != null then
                                                listnode6.add(pexprnode4)
                                        end
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode3 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode6
                                        )
-                                       var ppropdefnode1 = new AMainMethPropdef.init_amainmethpropdef(
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
                                                pexprnode3
                                        )
@@ -3317,7 +3229,7 @@ private class ReduceAction55
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3329,14 +3241,14 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3355,7 +3267,7 @@ private class ReduceAction56
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3368,16 +3280,16 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3396,7 +3308,7 @@ private class ReduceAction57
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3409,23 +3321,23 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3444,7 +3356,7 @@ private class ReduceAction58
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3458,25 +3370,25 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3495,7 +3407,7 @@ private class ReduceAction59
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3508,23 +3420,23 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3543,7 +3455,7 @@ private class ReduceAction60
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3557,25 +3469,25 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3594,7 +3506,7 @@ private class ReduceAction61
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3608,32 +3520,32 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist7 
+#                                      end
+                                       var listnode9 = nodearraylist7
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3652,7 +3564,7 @@ private class ReduceAction62
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -3667,34 +3579,34 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist8 
+#                                      end
+                                       var listnode9 = nodearraylist8
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3713,7 +3625,7 @@ private class ReduceAction63
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3727,19 +3639,19 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist6
-                                       assert ppropdefnode9 isa PPropdef
+                                       assert ppropdefnode9 isa nullable PPropdef
                                        if ppropdefnode9 != null then
                                                listnode10.add(ppropdefnode9)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3758,7 +3670,7 @@ private class ReduceAction64
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -3773,28 +3685,28 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist6
-                                       assert ppropdefnode9 isa PPropdef
-                                       var listnode10 = nodearraylist8 
+                                       assert ppropdefnode9 isa nullable PPropdef
+                                       var listnode10 = nodearraylist8
                                        assert listnode10 isa Array[Object]
                                        if ppropdefnode9 != null then
                                                listnode11.add(ppropdefnode9)
                                        end
-                                       if listnode10 != null then
+#                                      if listnode10 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode10
                                                else
                                                        listnode11.append(listnode10)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3813,7 +3725,7 @@ private class ReduceAction65
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -3828,21 +3740,21 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist7
-                                       assert ppropdefnode9 isa PPropdef
+                                       assert ppropdefnode9 isa nullable PPropdef
                                        if ppropdefnode9 != null then
                                                listnode10.add(ppropdefnode9)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3861,7 +3773,7 @@ private class ReduceAction66
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -3877,30 +3789,30 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist7
-                                       assert ppropdefnode9 isa PPropdef
-                                       var listnode10 = nodearraylist9 
+                                       assert ppropdefnode9 isa nullable PPropdef
+                                       var listnode10 = nodearraylist9
                                        assert listnode10 isa Array[Object]
                                        if ppropdefnode9 != null then
                                                listnode11.add(ppropdefnode9)
                                        end
-                                       if listnode10 != null then
+#                                      if listnode10 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode10
                                                else
                                                        listnode11.append(listnode10)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3919,7 +3831,7 @@ private class ReduceAction67
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -3934,28 +3846,28 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3974,7 +3886,7 @@ private class ReduceAction68
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -3990,37 +3902,37 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
-                                       var listnode11 = nodearraylist9 
+                                       assert ppropdefnode10 isa nullable PPropdef
+                                       var listnode11 = nodearraylist9
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
                                                listnode12.add(ppropdefnode10)
                                        end
-                                       if listnode11 != null then
+#                                      if listnode11 != null then
                                                if listnode12.is_empty then
                                                        listnode12 = listnode11
                                                else
                                                        listnode12.append(listnode11)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4039,7 +3951,7 @@ private class ReduceAction69
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -4055,30 +3967,30 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4097,7 +4009,7 @@ private class ReduceAction70
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -4114,39 +4026,39 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
-                                       var listnode11 = nodearraylist10 
+                                       assert ppropdefnode10 isa nullable PPropdef
+                                       var listnode11 = nodearraylist10
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
                                                listnode12.add(ppropdefnode10)
                                        end
-                                       if listnode11 != null then
+#                                      if listnode11 != null then
                                                if listnode12.is_empty then
                                                        listnode12 = listnode11
                                                else
                                                        listnode12.append(listnode11)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4165,7 +4077,7 @@ private class ReduceAction71
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -4180,28 +4092,28 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4220,7 +4132,7 @@ private class ReduceAction72
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -4236,37 +4148,37 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
-                                       var listnode11 = nodearraylist9 
+                                       assert ppropdefnode10 isa nullable PPropdef
+                                       var listnode11 = nodearraylist9
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
                                                listnode12.add(ppropdefnode10)
                                        end
-                                       if listnode11 != null then
+#                                      if listnode11 != null then
                                                if listnode12.is_empty then
                                                        listnode12 = listnode11
                                                else
                                                        listnode12.append(listnode11)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4285,7 +4197,7 @@ private class ReduceAction73
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -4301,30 +4213,30 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4343,7 +4255,7 @@ private class ReduceAction74
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -4360,39 +4272,39 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
-                                       var listnode11 = nodearraylist10 
+                                       assert ppropdefnode10 isa nullable PPropdef
+                                       var listnode11 = nodearraylist10
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
                                                listnode12.add(ppropdefnode10)
                                        end
-                                       if listnode11 != null then
+#                                      if listnode11 != null then
                                                if listnode12.is_empty then
                                                        listnode12 = listnode11
                                                else
                                                        listnode12.append(listnode11)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4411,7 +4323,7 @@ private class ReduceAction75
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -4427,37 +4339,37 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist7 
+#                                      end
+                                       var listnode9 = nodearraylist7
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist8
-                                       assert ppropdefnode11 isa PPropdef
+                                       assert ppropdefnode11 isa nullable PPropdef
                                        if ppropdefnode11 != null then
                                                listnode12.add(ppropdefnode11)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4476,7 +4388,7 @@ private class ReduceAction76
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -4493,46 +4405,46 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist7 
+#                                      end
+                                       var listnode9 = nodearraylist7
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist8
-                                       assert ppropdefnode11 isa PPropdef
-                                       var listnode12 = nodearraylist10 
+                                       assert ppropdefnode11 isa nullable PPropdef
+                                       var listnode12 = nodearraylist10
                                        assert listnode12 isa Array[Object]
                                        if ppropdefnode11 != null then
                                                listnode13.add(ppropdefnode11)
                                        end
-                                       if listnode12 != null then
+#                                      if listnode12 != null then
                                                if listnode13.is_empty then
                                                        listnode13 = listnode12
                                                else
                                                        listnode13.append(listnode12)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4551,7 +4463,7 @@ private class ReduceAction77
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -4568,39 +4480,39 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist8 
+#                                      end
+                                       var listnode9 = nodearraylist8
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist9
-                                       assert ppropdefnode11 isa PPropdef
+                                       assert ppropdefnode11 isa nullable PPropdef
                                        if ppropdefnode11 != null then
                                                listnode12.add(ppropdefnode11)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4619,7 +4531,7 @@ private class ReduceAction78
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist13 = p.pop
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
@@ -4637,48 +4549,48 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist8 
+#                                      end
+                                       var listnode9 = nodearraylist8
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist9
-                                       assert ppropdefnode11 isa PPropdef
-                                       var listnode12 = nodearraylist11 
+                                       assert ppropdefnode11 isa nullable PPropdef
+                                       var listnode12 = nodearraylist11
                                        assert listnode12 isa Array[Object]
                                        if ppropdefnode11 != null then
                                                listnode13.add(ppropdefnode11)
                                        end
-                                       if listnode12 != null then
+#                                      if listnode12 != null then
                                                if listnode13.is_empty then
                                                        listnode13 = listnode12
                                                else
                                                        listnode13.append(listnode12)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4697,11 +4609,11 @@ private class ReduceAction79
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwclassnode2 = nodearraylist1
-                                       assert tkwclassnode2 isa TKwclass
-                                       var pclasskindnode1 = new AConcreteClasskind.init_aconcreteclasskind(
+                                       assert tkwclassnode2 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
                                                tkwclassnode2
                                        )
                                        node_list = pclasskindnode1
@@ -4713,14 +4625,14 @@ private class ReduceAction80
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwabstractnode2 = nodearraylist1
-                                       assert tkwabstractnode2 isa TKwabstract
+                                       assert tkwabstractnode2 isa nullable TKwabstract
                                        var tkwclassnode3 = nodearraylist2
-                                       assert tkwclassnode3 isa TKwclass
-                                       var pclasskindnode1 = new AAbstractClasskind.init_aabstractclasskind(
+                                       assert tkwclassnode3 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
                                                tkwabstractnode2,
                                                tkwclassnode3
                                        )
@@ -4733,11 +4645,11 @@ private class ReduceAction81
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwinterfacenode2 = nodearraylist1
-                                       assert tkwinterfacenode2 isa TKwinterface
-                                       var pclasskindnode1 = new AInterfaceClasskind.init_ainterfaceclasskind(
+                                       assert tkwinterfacenode2 isa nullable TKwinterface
+                                       var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
                                                tkwinterfacenode2
                                        )
                                        node_list = pclasskindnode1
@@ -4749,11 +4661,11 @@ private class ReduceAction82
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwuniversalnode2 = nodearraylist1
-                                       assert tkwuniversalnode2 isa TKwuniversal
-                                       var pclasskindnode1 = new AUniversalClasskind.init_auniversalclasskind(
+                                       assert tkwuniversalnode2 isa nullable TKwuniversal
+                                       var pclasskindnode1: nullable AUniversalClasskind = new AUniversalClasskind.init_auniversalclasskind(
                                                tkwuniversalnode2
                                        )
                                        node_list = pclasskindnode1
@@ -4765,7 +4677,7 @@ private class ReduceAction83
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -4773,7 +4685,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa PFormaldef
+                                       assert pformaldefnode1 isa nullable PFormaldef
                                        if pformaldefnode1 != null then
                                                listnode2.add(pformaldefnode1)
                                        end
@@ -4786,7 +4698,7 @@ private class ReduceAction84
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -4795,19 +4707,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa PFormaldef
-                                       var listnode2 = nodearraylist4 
+                                       assert pformaldefnode1 isa nullable PFormaldef
+                                       var listnode2 = nodearraylist4
                                        assert listnode2 isa Array[Object]
                                        if pformaldefnode1 != null then
                                                listnode3.add(pformaldefnode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(7), node_list)
        end
@@ -4817,12 +4729,12 @@ private class ReduceAction85
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa PFormaldef
+                                       assert pformaldefnode1 isa nullable PFormaldef
                                        node_list = pformaldefnode1
                                        p.push(p.go_to(8), node_list)
        end
@@ -4832,11 +4744,11 @@ private class ReduceAction86
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
-                                       var pformaldefnode1 = new AFormaldef.init_aformaldef(
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
                                                tclassidnode2,
                                                null
                                        )
@@ -4849,14 +4761,14 @@ private class ReduceAction87
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
+                                       assert tclassidnode2 isa nullable TClassid
                                        var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
-                                       var pformaldefnode1 = new AFormaldef.init_aformaldef(
+                                       assert ptypenode3 isa nullable PType
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
                                                tclassidnode2,
                                                ptypenode3
                                        )
@@ -4869,16 +4781,16 @@ private class ReduceAction88
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwspecialnode2 = nodearraylist2
-                                       assert tkwspecialnode2 isa TKwspecial
+                                       assert tkwspecialnode2 isa nullable TKwspecial
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var psuperclassnode1 = new ASuperclass.init_asuperclass(
+                                       assert ptypenode3 isa nullable PType
+                                       var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
                                                tkwspecialnode2,
                                                ptypenode3
                                        )
@@ -4891,11 +4803,11 @@ private class ReduceAction89
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
+                                       assert ppropdefnode1 isa nullable PPropdef
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(11), node_list)
        end
@@ -4905,7 +4817,8 @@ private class ReduceAction90
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -4913,35 +4826,25 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist6
-                                       assert tattridnode12 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -4952,7 +4855,8 @@ private class ReduceAction91
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -4961,37 +4865,27 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               tkwattrnode11,
-                                               tattridnode12,
-                                               null,
-                                               null
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -5002,36 +4896,35 @@ private class ReduceAction92
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
-                                       var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode8,
-                                               tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -5042,7 +4935,9 @@ private class ReduceAction93
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -5051,37 +4946,27 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               tkwattrnode11,
-                                               tattridnode12,
-                                               null,
-                                               null
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -5092,8 +4977,7 @@ private class ReduceAction94
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5102,39 +4986,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
-                                               tkwredefnode7,
-                                               tkwwritablenode8
-                                       )
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
-                                               pablenode3,
-                                               pablenode6,
-                                               null,
-                                               pvisibilitynode10,
-                                               tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -5145,7 +5012,9 @@ private class ReduceAction95
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -5153,31 +5022,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
-                                       var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
-                                               tkwredefnode4,
-                                               tkwreadablenode5
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode8,
-                                               tkwattrnode9,
-                                               tattridnode10,
-                                               null,
-                                               null
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -5188,36 +5050,31 @@ private class ReduceAction96
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
-                                       var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
-                                               null,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
                                                pdocnode2,
                                                null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               tkwattrnode9,
-                                               tattridnode10,
-                                               null,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -5228,7 +5085,9 @@ private class ReduceAction97
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -5236,31 +5095,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
-                                       var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
-                                               tkwredefnode5,
-                                               tkwwritablenode6
-                                       )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
                                                pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode8,
-                                               tkwattrnode9,
-                                               tattridnode10,
-                                               null,
-                                               null
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
@@ -5271,28 +5123,31 @@ private class ReduceAction98
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwattrnode7,
-                                               tattridnode8,
-                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5304,7 +5159,87 @@ private class ReduceAction99
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction100
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction101
+special ReduceAction
+       redef meth 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
@@ -5313,35 +5248,73 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       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(12), node_list)
+       end
+init do end
+end
+private class ReduceAction102
+special ReduceAction
+       redef meth 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 TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
+                                               null,
+                                               tattridnode13,
                                                null,
                                                null
                                        )
@@ -5350,12 +5323,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction100
+private class ReduceAction103
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5364,37 +5336,36 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
+                                               null,
+                                               tattridnode13,
                                                null,
                                                null
                                        )
@@ -5403,41 +5374,39 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction101
+private class ReduceAction104
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist6 = p.pop
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
+                                               null,
+                                               tattridnode11,
                                                null,
                                                null
                                        )
@@ -5446,12 +5415,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction102
+private class ReduceAction105
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5460,37 +5428,36 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
+                                               null,
+                                               tattridnode13,
                                                null,
                                                null
                                        )
@@ -5499,12 +5466,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction103
+private class ReduceAction106
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5514,39 +5480,38 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist9
-                                       assert tattridnode12 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
+                                               null,
+                                               tattridnode13,
                                                null,
                                                null
                                        )
@@ -5555,12 +5520,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction104
+private class ReduceAction107
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5568,31 +5532,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
+                                               null,
+                                               tattridnode11,
                                                null,
                                                null
                                        )
@@ -5601,41 +5564,39 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction105
+private class ReduceAction108
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist6 = p.pop
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
+                                               null,
+                                               tattridnode11,
                                                null,
                                                null
                                        )
@@ -5644,12 +5605,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction106
+private class ReduceAction109
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5657,31 +5617,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
+                                               null,
+                                               tattridnode11,
                                                null,
                                                null
                                        )
@@ -5690,34 +5649,32 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction107
+private class ReduceAction110
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist5 = p.pop
+                                       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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pdocnode2 isa nullable PDoc
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               tkwredefnode5,
+                                               null,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
+                                               null,
+                                               tattridnode9,
                                                null,
                                                null
                                        )
@@ -5726,11 +5683,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction108
+private class ReduceAction111
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5739,48 +5696,49 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist6
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist7
-                                       assert ptypenode13 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               null
+                                               null,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction109
+private class ReduceAction112
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5790,38 +5748,39 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5829,11 +5788,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction110
+private class ReduceAction113
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5841,30 +5800,31 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist6
-                                       assert ptypenode11 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5872,11 +5832,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction111
+private class ReduceAction114
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5886,38 +5846,39 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5925,11 +5886,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction112
+private class ReduceAction115
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5940,40 +5901,41 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5981,11 +5943,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction113
+private class ReduceAction116
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5994,32 +5956,33 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6027,11 +5990,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction114
+private class ReduceAction117
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6039,30 +6002,31 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist6
-                                       assert ptypenode11 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6070,11 +6034,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction115
+private class ReduceAction118
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6083,32 +6047,33 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6116,35 +6081,36 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction116
+private class ReduceAction119
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa TAttrid
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pdocnode2 isa nullable PDoc
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               null,
+                                               tkwredefnode5,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
-                                               ptypenode9,
+                                               null,
+                                               tattridnode9,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6152,12 +6118,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction117
+private class ReduceAction120
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6166,38 +6131,37 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6205,12 +6169,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction118
+private class ReduceAction121
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6220,40 +6183,39 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6261,12 +6223,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction119
+private class ReduceAction122
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6274,32 +6235,31 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6307,12 +6267,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction120
+private class ReduceAction123
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6322,40 +6281,39 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6363,12 +6321,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction121
+private class ReduceAction124
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6379,42 +6336,41 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist9
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist10
-                                       assert ptypenode13 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6422,12 +6378,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction122
+private class ReduceAction125
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6436,34 +6391,33 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist8
-                                       assert ptypenode11 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6471,12 +6425,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction123
+private class ReduceAction126
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6484,32 +6437,31 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6517,12 +6469,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction124
+private class ReduceAction127
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6531,34 +6482,33 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist8
-                                       assert ptypenode11 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6566,38 +6516,36 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction125
+private class ReduceAction128
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist6 = p.pop
+                                       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 PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa TAttrid
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pdocnode2 isa nullable PDoc
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               tkwredefnode5,
+                                               null,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
-                                               ptypenode9,
+                                               null,
+                                               tattridnode9,
+                                               ptypenode10,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6605,12 +6553,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction126
+private class ReduceAction129
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6620,49 +6567,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist6
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist9
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               pexprnode14
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction127
+private class ReduceAction130
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6673,51 +6622,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist10
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               pexprnode14
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction128
+private class ReduceAction131
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6726,43 +6677,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               pexprnode12
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction129
+private class ReduceAction132
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6773,51 +6726,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist10
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               pexprnode14
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction130
+private class ReduceAction133
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist11 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -6829,53 +6784,55 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               pexprnode14
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction131
+private class ReduceAction134
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6885,45 +6842,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               pexprnode12
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction132
+private class ReduceAction135
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6932,43 +6891,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               pexprnode12
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction133
+private class ReduceAction136
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6978,45 +6939,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               pexprnode12
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction134
+private class ReduceAction137
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -7024,37 +6987,39 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa TAttrid
-                                       var pexprnode10 = nodearraylist7
-                                       assert pexprnode10 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pdocnode2 isa nullable PDoc
+                                       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 ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               null,
+                                               tkwredefnode5,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
                                                null,
-                                               pexprnode10
+                                               tattridnode9,
+                                               ptypenode10,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction135
+private class ReduceAction138
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7065,51 +7030,49 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist10
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               pexprnode14
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction136
+private class ReduceAction139
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist11 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7121,53 +7084,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               pexprnode14
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction137
+private class ReduceAction140
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7177,45 +7138,43 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               pexprnode12
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction138
+private class ReduceAction141
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist11 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7227,53 +7186,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               pexprnode14
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction139
+private class ReduceAction142
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist12 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7286,55 +7243,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist9
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist12
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
                                                null,
-                                               pexprnode14
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction140
+private class ReduceAction143
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7345,47 +7300,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               pexprnode12
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction141
+private class ReduceAction144
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7395,45 +7348,43 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               pexprnode12
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction142
+private class ReduceAction145
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7444,47 +7395,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
                                                null,
-                                               pexprnode12
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction143
+private class ReduceAction146
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7493,38 +7442,37 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa TAttrid
-                                       var pexprnode10 = nodearraylist8
-                                       assert pexprnode10 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pdocnode2 isa nullable PDoc
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               tkwredefnode5,
+                                               null,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
                                                null,
-                                               pexprnode10
+                                               tattridnode9,
+                                               null,
+                                               pexprnode11
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction144
+private class ReduceAction147
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7536,50 +7484,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist6
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist7
-                                       assert ptypenode13 isa PType
-                                       var pexprnode14 = nodearraylist10
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               pexprnode14
+                                               null,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction145
+private class ReduceAction148
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7592,52 +7541,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               pexprnode14
+                                               null,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction146
+private class ReduceAction149
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7648,44 +7598,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist6
-                                       assert ptypenode11 isa PType
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
-                                               pexprnode12
+                                               null,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction147
+private class ReduceAction150
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7698,52 +7649,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               pexprnode14
+                                               null,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction148
+private class ReduceAction151
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -7757,54 +7709,55 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
-                                       var pexprnode14 = nodearraylist12
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               pexprnode14
+                                               null,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction149
+private class ReduceAction152
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7816,46 +7769,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
-                                               pexprnode12
+                                               null,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction150
+private class ReduceAction153
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7866,44 +7820,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist6
-                                       assert ptypenode11 isa PType
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
-                                               pexprnode12
+                                               null,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction151
+private class ReduceAction154
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7915,46 +7870,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
-                                               pexprnode12
+                                               null,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction152
+private class ReduceAction155
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7964,39 +7920,39 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa TAttrid
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var pexprnode10 = nodearraylist8
-                                       assert pexprnode10 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pdocnode2 isa nullable PDoc
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               null,
+                                               tkwredefnode5,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
-                                               ptypenode9,
-                                               pexprnode10
+                                               null,
+                                               tattridnode9,
+                                               null,
+                                               pexprnode11
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction153
+private class ReduceAction156
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist11 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8008,53 +7964,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               pexprnode14
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction154
+private class ReduceAction157
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist12 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -8067,55 +8021,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
-                                       var pexprnode14 = nodearraylist12
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               pexprnode14
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction155
+private class ReduceAction158
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -8126,47 +8078,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
-                                               pexprnode12
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction156
+private class ReduceAction159
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist12 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -8179,55 +8129,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
-                                       var pexprnode14 = nodearraylist12
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               pexprnode14
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction157
+private class ReduceAction160
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist13 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -8241,57 +8189,55 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist9
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist10
-                                       assert ptypenode13 isa PType
-                                       var pexprnode14 = nodearraylist13
-                                       assert pexprnode14 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
-                                               pexprnode14
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction158
+private class ReduceAction161
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist11 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8303,49 +8249,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist8
-                                       assert ptypenode11 isa PType
-                                       var pexprnode12 = nodearraylist11
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
-                                               pexprnode12
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction159
+private class ReduceAction162
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -8356,47 +8300,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
-                                               pexprnode12
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction160
+private class ReduceAction163
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist11 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8408,49 +8350,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist8
-                                       assert ptypenode11 isa PType
-                                       var pexprnode12 = nodearraylist11
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
-                                               pexprnode12
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction161
+private class ReduceAction164
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8460,40 +8400,44 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa TAttrid
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var pexprnode10 = nodearraylist9
-                                       assert pexprnode10 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pdocnode2 isa nullable PDoc
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               tkwredefnode5,
+                                               null,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
-                                               ptypenode9,
-                                               pexprnode10
+                                               null,
+                                               tattridnode9,
+                                               ptypenode10,
+                                               pexprnode11
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction162
+private class ReduceAction165
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -8501,38 +8445,58 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode10
+                                               tkwreadablenode5
+                                       )
+                                       var tkwwritablenode8 = nodearraylist3
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode8
                                        )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               tkwattrnode11,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction163
+private class ReduceAction166
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -8541,47 +8505,58 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode11
+                                               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 ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               tkwattrnode11,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction164
+private class ReduceAction167
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -8590,40 +8565,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               tkwattrnode9,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction165
+private class ReduceAction168
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -8633,50 +8619,62 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       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 ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               tkwattrnode11,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction166
+private class ReduceAction169
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       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
@@ -8684,47 +8682,60 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
+                                       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 ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               tkwattrnode11,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction167
+private class ReduceAction170
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -8734,56 +8745,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
+                                       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 ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               tkwattrnode9,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction168
+private class ReduceAction171
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -8793,49 +8799,49 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
                                        )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               tkwattrnode9,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction169
+private class ReduceAction172
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -8846,58 +8852,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       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 ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               tkwattrnode9,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction170
+private class ReduceAction173
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -8906,42 +8905,41 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       assert pdocnode2 isa nullable PDoc
+                                       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
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwattrnode7,
+                                               null,
+                                               tattridnode9,
+                                               ptypenode10,
+                                               pexprnode11
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction171
+private class ReduceAction174
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8949,50 +8947,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode11
+                                               tkwreadablenode5
+                                       )
+                                       var tkwwritablenode8 = nodearraylist3
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode8
                                        )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction172
+private class ReduceAction175
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9001,98 +8996,90 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                       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(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction173
+private class ReduceAction176
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
+                                       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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               null,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction174
+private class ReduceAction177
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9101,50 +9088,49 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       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,
-                                               listnode11
+                                               tkwwritablenode8
                                        )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction175
+private class ReduceAction178
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9154,61 +9140,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
+                                       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 ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction176
+private class ReduceAction179
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9216,116 +9192,84 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
+                                       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 ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               null,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction177
+private class ReduceAction180
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
+                                       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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
                                        )
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               null,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction178
+private class ReduceAction181
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9333,87 +9277,77 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction179
+private class ReduceAction182
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
+                                       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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction180
+private class ReduceAction183
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9422,40 +9356,49 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction181
+private class ReduceAction184
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9465,50 +9408,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction182
+private class ReduceAction185
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9516,47 +9460,43 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode11
+                                               tkwreadablenode5
                                        )
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction183
+private class ReduceAction186
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9566,56 +9506,52 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       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,
-                                               listnode12
+                                               tkwwritablenode8
                                        )
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction184
+private class ReduceAction187
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9625,51 +9561,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction185
+private class ReduceAction188
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9678,59 +9616,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction186
+private class ReduceAction189
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9738,41 +9662,43 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
-                                               listnode10
+                                               tkwwritablenode6
                                        )
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction187
+private class ReduceAction190
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9781,96 +9707,82 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction188
+private class ReduceAction191
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
+                                       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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction189
+private class ReduceAction192
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9879,51 +9791,49 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction190
+private class ReduceAction193
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9933,52 +9843,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode11
+                                               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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction191
+private class ReduceAction194
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9986,59 +9895,43 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode12
+                                               tkwreadablenode5
                                        )
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               null,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction192
+private class ReduceAction195
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10048,52 +9941,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction193
+private class ReduceAction196
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10104,60 +9996,54 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       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 ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction194
+private class ReduceAction197
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10165,27 +10051,33 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
+                                       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 ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10193,12 +10085,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction195
+private class ReduceAction198
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10206,36 +10097,31 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
-                                               listnode11
+                                               tkwwritablenode6
                                        )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10243,11 +10129,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction196
+private class ReduceAction199
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10256,29 +10142,33 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       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 ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10286,52 +10176,36 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction197
+private class ReduceAction200
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
+                                       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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               ptypenode10,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10339,11 +10213,12 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction198
+private class ReduceAction201
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10352,36 +10227,39 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode11
+                                               tkwreadablenode5
+                                       )
+                                       var tkwwritablenode8 = nodearraylist3
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode8
                                        )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10389,11 +10267,12 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction199
+private class ReduceAction202
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10403,45 +10282,41 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode12
+                                               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 ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10449,12 +10324,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction200
+private class ReduceAction203
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10463,38 +10337,33 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10502,11 +10371,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction201
+private class ReduceAction204
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10517,47 +10386,41 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       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 ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10565,11 +10428,14 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction202
+private class ReduceAction205
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -10578,29 +10444,43 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
+                                       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 ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10608,11 +10488,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction203
+private class ReduceAction206
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10622,38 +10502,35 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
+                                       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 ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode3,
+                                               null,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10661,12 +10538,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction204
+private class ReduceAction207
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10675,31 +10551,33 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
                                        )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10707,12 +10585,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction205
+private class ReduceAction208
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10722,40 +10599,35 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       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 ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10763,13 +10635,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction206
+private class ReduceAction209
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10777,38 +10647,27 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               ptypenode10,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -10816,11 +10675,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction207
+private class ReduceAction210
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10831,59 +10690,50 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode12
+                                               tkwreadablenode5
+                                       )
+                                       var tkwwritablenode8 = nodearraylist3
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode8
                                        )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction208
+private class ReduceAction211
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10894,54 +10744,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
+                                       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
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction209
+private class ReduceAction212
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10951,61 +10798,46 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
+                                               pablenode3,
+                                               null,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction210
+private class ReduceAction213
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -11014,41 +10846,54 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       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,
-                                               listnode10
+                                               tkwwritablenode8
                                        )
-                                       var tstringnode11 = nodearraylist7
-                                       assert tstringnode11 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode11
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction211
+private class ReduceAction214
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -11058,50 +10903,54 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
+                                       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 tstringnode12 = nodearraylist8
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction212
+private class ReduceAction215
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -11111,44 +10960,45 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       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 tstringnode11 = nodearraylist8
-                                       assert tstringnode11 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode11
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction213
+private class ReduceAction216
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -11158,52 +11008,44 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
                                        )
-                                       var tstringnode12 = nodearraylist9
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction214
+private class ReduceAction217
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -11213,50 +11055,85 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       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,
-                                               listnode11
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
-                                       var tstringnode12 = nodearraylist8
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction218
+special ReduceAction
+       redef meth 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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               null,
+                                               pexprnode11
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction215
+private class ReduceAction219
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11267,59 +11144,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode12
+                                               tkwreadablenode5
+                                       )
+                                       var tkwwritablenode8 = nodearraylist3
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode8
                                        )
-                                       var tstringnode13 = nodearraylist9
-                                       assert tstringnode13 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode13
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction216
+private class ReduceAction220
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -11330,53 +11201,53 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
+                                       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 tstringnode12 = nodearraylist9
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction217
+private class ReduceAction221
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11387,61 +11258,48 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var tstringnode13 = nodearraylist10
-                                       assert tstringnode13 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode13
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction218
+private class ReduceAction222
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -11451,43 +11309,56 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       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,
-                                               listnode10
+                                               tkwwritablenode8
                                        )
-                                       var tstringnode11 = nodearraylist8
-                                       assert tstringnode11 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode11
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction219
+private class ReduceAction223
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -11498,52 +11369,56 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
+                                       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 tstringnode12 = nodearraylist9
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction220
+private class ReduceAction224
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11554,46 +11429,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       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 tstringnode11 = nodearraylist9
-                                       assert tstringnode11 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode11
+                                               pablenode3,
+                                               null,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction221
+private class ReduceAction225
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11604,54 +11480,46 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
                                        )
-                                       var tstringnode12 = nodearraylist10
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction222
+private class ReduceAction226
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11662,54 +11530,47 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
+                                       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 tstringnode12 = nodearraylist9
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction223
+private class ReduceAction227
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -11719,61 +11580,39 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var tstringnode13 = nodearraylist10
-                                       assert tstringnode13 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode13
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               null,
+                                               pexprnode11
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction224
+private class ReduceAction228
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -11785,54 +11624,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
+                                       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 tstringnode12 = nodearraylist10
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction225
+private class ReduceAction229
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -11845,63 +11681,55 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var tstringnode13 = nodearraylist11
-                                       assert tstringnode13 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode13
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction226
+private class ReduceAction230
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -11910,41 +11738,48 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode10
+                                               tkwreadablenode5
                                        )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction227
+private class ReduceAction231
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -11954,50 +11789,57 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       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,
-                                               listnode11
+                                               tkwwritablenode8
                                        )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction228
+private class ReduceAction232
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -12007,43 +11849,56 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       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 pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction229
+private class ReduceAction233
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -12054,52 +11909,48 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       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 pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction230
+private class ReduceAction234
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -12109,50 +11960,46 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
-                                               listnode11
+                                               tkwwritablenode6
                                        )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction231
+private class ReduceAction235
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -12163,47 +12010,35 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
+                                       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 pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                pexprnode13
                                        )
                                        node_list = ppropdefnode1
@@ -12211,12 +12046,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction232
+private class ReduceAction236
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -12226,52 +12060,40 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               ptypenode10,
+                                               pexprnode11
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction233
+private class ReduceAction237
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -12283,61 +12105,57 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction234
+private class ReduceAction238
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -12347,43 +12165,56 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode10
+                                               tkwreadablenode5
                                        )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction235
+private class ReduceAction239
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -12394,52 +12225,50 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
-                                               listnode11
+                                               tkwreadablenode5
                                        )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               pablenode3,
+                                               null,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction236
+private class ReduceAction240
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -12450,6709 +12279,60 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction237
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction238
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction239
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction240
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction241
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction242
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction243
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction244
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction245
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction246
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction247
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction248
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction249
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction250
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction251
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction252
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction253
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction254
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction255
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction256
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction257
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction258
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist6
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction259
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist4 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist7
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction260
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist4
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction261
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist4 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction262
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist4 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist7
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction263
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist4 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist5 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction264
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist4
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction265
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist4 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction266
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction267
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction268
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction269
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction270
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction271
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction272
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction273
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction274
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction275
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction276
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction277
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction278
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction279
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction280
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction281
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction282
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction283
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction284
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction285
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction286
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction287
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction288
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction289
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction290
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist6
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction291
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist4 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist7
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction292
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist4
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction293
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist4 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction294
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist4 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist7
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction295
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist4 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist5 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction296
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist4
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction297
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist4 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction298
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction299
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction300
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction301
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction302
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction303
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction304
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction305
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction306
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction307
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction308
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction309
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction310
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction311
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction312
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction313
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction314
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction315
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction316
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction317
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction318
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction319
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction320
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction321
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction322
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwtypenode5 = nodearraylist3
-                                       assert tkwtypenode5 isa TKwtype
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa TClassid
-                                       var ptypenode7 = nodearraylist5
-                                       assert ptypenode7 isa PType
-                                       var ppropdefnode1 = new ATypePropdef.init_atypepropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction323
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwtypenode5 = nodearraylist4
-                                       assert tkwtypenode5 isa TKwtype
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa PType
-                                       var ppropdefnode1 = new ATypePropdef.init_atypepropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction324
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(13), node_list)
-       end
-init do end
-end
-private class ReduceAction325
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction326
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction327
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction328
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction329
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction330
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction331
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction332
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction333
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction334
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction335
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction336
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction337
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction338
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction339
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction340
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction341
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var tstringnode11 = nodearraylist7
-                                       assert tstringnode11 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction342
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var tstringnode12 = nodearraylist8
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction343
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var tstringnode11 = nodearraylist8
-                                       assert tstringnode11 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction344
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var tstringnode12 = nodearraylist9
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction345
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var tstringnode12 = nodearraylist8
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction346
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var tstringnode13 = nodearraylist9
-                                       assert tstringnode13 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction347
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var tstringnode12 = nodearraylist9
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction348
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var tstringnode13 = nodearraylist10
-                                       assert tstringnode13 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction349
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var tstringnode11 = nodearraylist8
-                                       assert tstringnode11 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction350
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var tstringnode12 = nodearraylist9
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction351
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var tstringnode11 = nodearraylist9
-                                       assert tstringnode11 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode11
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction352
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var tstringnode12 = nodearraylist10
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction353
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var tstringnode12 = nodearraylist9
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction354
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var tstringnode13 = nodearraylist10
-                                       assert tstringnode13 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction355
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var tstringnode12 = nodearraylist10
-                                       assert tstringnode12 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode12
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction356
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var tstringnode13 = nodearraylist11
-                                       assert tstringnode13 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode13
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction357
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
+                                       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
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction358
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
+                                       var tkwwritablenode8 = nodearraylist4
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
-                                               listnode11
+                                               tkwwritablenode8
                                        )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction359
+private class ReduceAction241
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -19162,43 +12342,59 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
+                                       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 pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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 pexprnode15 = nodearraylist13
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode11
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction360
+private class ReduceAction242
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -19209,52 +12405,51 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
+                                       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 pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction361
+private class ReduceAction243
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -19264,50 +12459,49 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist5 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       assert pdocnode2 isa nullable PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
-                                               listnode11
+                                               tkwwritablenode6
                                        )
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction362
+private class ReduceAction244
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -19318,59 +12512,49 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist6 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
+                                       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 pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
                                                pexprnode13
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction363
+private class ReduceAction245
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -19381,56 +12565,41 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               ptypenode10,
+                                               pexprnode11
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction364
+private class ReduceAction246
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -19438,62 +12607,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist5 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwmethnode5,
-                                               pmethidnode6,
+                                               tkwinitnode5,
+                                               null,
                                                psignaturenode7,
-                                               pexprnode13
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction365
+private class ReduceAction247
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -19502,44 +12643,74 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
+                                       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,
-                                               listnode10
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction248
+special ReduceAction
+       redef meth 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,
-                                               tkwredefnode3,
+                                               null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
+                                               tkwinitnode5,
                                                pmethidnode6,
                                                psignaturenode7,
-                                               pexprnode11
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction366
+private class ReduceAction249
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -19549,54 +12720,38 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwmethnode5,
+                                               tkwinitnode5,
                                                pmethidnode6,
                                                psignaturenode7,
-                                               pexprnode12
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction367
+private class ReduceAction250
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -19605,47 +12760,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode10
-                                       )
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwredefnode3,
+                                               null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
+                                               tkwinitnode5,
+                                               null,
                                                psignaturenode7,
-                                               pexprnode11
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction368
+private class ReduceAction251
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -19655,55 +12797,36 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwmethnode5,
-                                               pmethidnode6,
+                                               tkwinitnode5,
+                                               null,
                                                psignaturenode7,
-                                               pexprnode12
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction369
+private class ReduceAction252
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist9 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -19713,53 +12836,36 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode10 = nodearraylist6 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               null,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwredefnode3,
+                                               null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
+                                               tkwinitnode5,
                                                pmethidnode6,
                                                psignaturenode7,
-                                               pexprnode12
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction370
+private class ReduceAction253
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -19770,125 +12876,71 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert pvisibilitynode4 isa nullable PVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var listnode11 = nodearraylist7 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               null,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwmethnode5,
+                                               tkwinitnode5,
                                                pmethidnode6,
                                                psignaturenode7,
-                                               pexprnode13
+                                               pexprnode8
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction371
+private class ReduceAction254
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
+                                       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 PDoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
-                                       var listnode10 = nodearraylist7 
-                                       assert listnode10 isa Array[Object]
-                                       if listnode10 != null then
-                                               if listnode11.is_empty then
-                                                       listnode11 = listnode10
-                                               else
-                                                       listnode11.append(listnode10)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode8,
-                                               ptypenode9,
-                                               listnode11
-                                       )
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwredefnode3,
+                                               null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode12
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction372
+private class ReduceAction255
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -19896,492 +12948,696 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
-                                       var listnode9 = new Array[Object]
-                                       var listnode12 = new Array[Object]
-                                       var listnode8 = nodearraylist6 
-                                       assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
-                                               if listnode9.is_empty then
-                                                       listnode9 = listnode8
-                                               else
-                                                       listnode9.append(listnode8)
-                                               end
-                                       end
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa PType
-                                       var listnode11 = nodearraylist8 
-                                       assert listnode11 isa Array[Object]
-                                       if listnode11 != null then
-                                               if listnode12.is_empty then
-                                                       listnode12 = listnode11
-                                               else
-                                                       listnode12.append(listnode11)
-                                               end
-                                       end
-                                       var psignaturenode7 = new ASignature.init_asignature(
-                                               listnode9,
-                                               ptypenode10,
-                                               listnode12
-                                       )
-                                       var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode13
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7
                                        )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction373
+private class ReduceAction256
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var pvisibilitynode1 = new APublicVisibility.init_apublicvisibility(
+                                       var node_list: nullable Object = null
+                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                        )
                                        node_list = pvisibilitynode1
-                                       p.push(p.go_to(15), node_list)
+                                       p.push(p.go_to(13), node_list)
        end
 init do end
 end
-private class ReduceAction374
+private class ReduceAction257
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwprivatenode2 = nodearraylist1
-                                       assert tkwprivatenode2 isa TKwprivate
-                                       var pvisibilitynode1 = new APrivateVisibility.init_aprivatevisibility(
+                                       assert tkwprivatenode2 isa nullable TKwprivate
+                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
                                                tkwprivatenode2
                                        )
                                        node_list = pvisibilitynode1
-                                       p.push(p.go_to(15), node_list)
+                                       p.push(p.go_to(13), node_list)
        end
 init do end
 end
-private class ReduceAction375
+private class ReduceAction258
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwprotectednode2 = nodearraylist1
-                                       assert tkwprotectednode2 isa TKwprotected
-                                       var pvisibilitynode1 = new AProtectedVisibility.init_aprotectedvisibility(
+                                       assert tkwprotectednode2 isa nullable TKwprotected
+                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
                                                tkwprotectednode2
                                        )
                                        node_list = pvisibilitynode1
-                                       p.push(p.go_to(15), node_list)
+                                       p.push(p.go_to(13), node_list)
        end
 init do end
 end
-private class ReduceAction376
+private class ReduceAction259
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwintrudenode2 = nodearraylist1
-                                       assert tkwintrudenode2 isa TKwintrude
-                                       var pvisibilitynode1 = new AIntrudeVisibility.init_aintrudevisibility(
+                                       assert tkwintrudenode2 isa nullable TKwintrude
+                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
                                                tkwintrudenode2
                                        )
                                        node_list = pvisibilitynode1
-                                       p.push(p.go_to(15), node_list)
+                                       p.push(p.go_to(13), node_list)
        end
 init do end
 end
-private class ReduceAction377
+private class ReduceAction260
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var pmethidnode1 = new AIdMethid.init_aidmethid(
+                                       assert tidnode2 isa nullable TId
+                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
                                                tidnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction378
+private class ReduceAction261
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tplusnode2 = nodearraylist1
-                                       assert tplusnode2 isa TPlus
-                                       var pmethidnode1 = new APlusMethid.init_aplusmethid(
+                                       assert tplusnode2 isa nullable TPlus
+                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
                                                tplusnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction379
+private class ReduceAction262
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
-                                       var pmethidnode1 = new AMinusMethid.init_aminusmethid(
+                                       assert tminusnode2 isa nullable TMinus
+                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
                                                tminusnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction380
+private class ReduceAction263
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstarnode2 = nodearraylist1
-                                       assert tstarnode2 isa TStar
-                                       var pmethidnode1 = new AStarMethid.init_astarmethid(
+                                       assert tstarnode2 isa nullable TStar
+                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
                                                tstarnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction381
+private class ReduceAction264
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tslashnode2 = nodearraylist1
-                                       assert tslashnode2 isa TSlash
-                                       var pmethidnode1 = new ASlashMethid.init_aslashmethid(
+                                       assert tslashnode2 isa nullable TSlash
+                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
                                                tslashnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction382
+private class ReduceAction265
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tpercentnode2 = nodearraylist1
-                                       assert tpercentnode2 isa TPercent
-                                       var pmethidnode1 = new APercentMethid.init_apercentmethid(
+                                       assert tpercentnode2 isa nullable TPercent
+                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
                                                tpercentnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction383
+private class ReduceAction266
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var teqnode2 = nodearraylist1
-                                       assert teqnode2 isa TEq
-                                       var pmethidnode1 = new AEqMethid.init_aeqmethid(
+                                       assert teqnode2 isa nullable TEq
+                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
                                                teqnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction384
+private class ReduceAction267
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnenode2 = nodearraylist1
-                                       assert tnenode2 isa TNe
-                                       var pmethidnode1 = new ANeMethid.init_anemethid(
+                                       assert tnenode2 isa nullable TNe
+                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
                                                tnenode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction385
+private class ReduceAction268
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tlenode2 = nodearraylist1
-                                       assert tlenode2 isa TLe
-                                       var pmethidnode1 = new ALeMethid.init_alemethid(
+                                       assert tlenode2 isa nullable TLe
+                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
                                                tlenode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction386
+private class ReduceAction269
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tgenode2 = nodearraylist1
-                                       assert tgenode2 isa TGe
-                                       var pmethidnode1 = new AGeMethid.init_agemethid(
+                                       assert tgenode2 isa nullable TGe
+                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
                                                tgenode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction387
+private class ReduceAction270
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tltnode2 = nodearraylist1
-                                       assert tltnode2 isa TLt
-                                       var pmethidnode1 = new ALtMethid.init_altmethid(
+                                       assert tltnode2 isa nullable TLt
+                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
                                                tltnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction388
+private class ReduceAction271
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tgtnode2 = nodearraylist1
-                                       assert tgtnode2 isa TGt
-                                       var pmethidnode1 = new AGtMethid.init_agtmethid(
+                                       assert tgtnode2 isa nullable TGt
+                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
                                                tgtnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction389
+private class ReduceAction272
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa TObra
+                                       assert tobranode2 isa nullable TObra
                                        var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa TCbra
-                                       var pmethidnode1 = new ABraMethid.init_abramethid(
+                                       assert tcbranode3 isa nullable TCbra
+                                       var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
                                                tobranode2,
                                                tcbranode3
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction390
+private class ReduceAction273
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstarshipnode2 = nodearraylist1
-                                       assert tstarshipnode2 isa TStarship
-                                       var pmethidnode1 = new AStarshipMethid.init_astarshipmethid(
+                                       assert tstarshipnode2 isa nullable TStarship
+                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
                                                tstarshipnode2
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction391
+private class ReduceAction274
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
+                                       assert tidnode2 isa nullable TId
                                        var tassignnode3 = nodearraylist2
-                                       assert tassignnode3 isa TAssign
-                                       var pmethidnode1 = new AAssignMethid.init_aassignmethid(
+                                       assert tassignnode3 isa nullable TAssign
+                                       var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
                                                tidnode2,
                                                tassignnode3
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction392
+private class ReduceAction275
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa TObra
+                                       assert tobranode2 isa nullable TObra
                                        var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa TCbra
+                                       assert tcbranode3 isa nullable TCbra
                                        var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa TAssign
-                                       var pmethidnode1 = new ABraassignMethid.init_abraassignmethid(
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
                                                tobranode2,
                                                tcbranode3,
                                                tassignnode4
                                        )
                                        node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       p.push(p.go_to(14), node_list)
        end
 init do end
 end
-private class ReduceAction393
+private class ReduceAction276
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       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,
+                                               null,
+                                               listnode5
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
+       end
+init do end
+end
+private class ReduceAction277
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       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,
+                                               null,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
+       end
+init do end
+end
+private class ReduceAction278
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var listnode5 = new Array[Object]
+                                       var ptypenode3 = nodearraylist1
+                                       assert ptypenode3 isa nullable 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
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
+       end
+init do end
+end
+private class ReduceAction279
+special ReduceAction
+       redef meth 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 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,
+                                               ptypenode4,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
+       end
+init do end
+end
+private class ReduceAction280
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var listnode4 = new Array[Object]
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode2,
                                                null,
                                                listnode4
                                        )
                                        node_list = psignaturenode1
-                                       p.push(p.go_to(17), node_list)
+                                       p.push(p.go_to(15), node_list)
        end
 init do end
 end
-private class ReduceAction394
+private class ReduceAction281
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode5 = new Array[Object]
+                                       var 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
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
+       end
+init do end
+end
+private class ReduceAction282
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       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
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
+       end
+init do end
+end
+private class ReduceAction283
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
+       end
+init do end
+end
+private class ReduceAction284
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(16), node_list)
+       end
+init do end
+end
+private class ReduceAction285
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var psignaturenode1 = new ASignature.init_asignature(
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode3,
                                                null,
                                                listnode5
                                        )
                                        node_list = psignaturenode1
-                                       p.push(p.go_to(17), node_list)
+                                       p.push(p.go_to(16), node_list)
        end
 init do end
 end
-private class ReduceAction395
+private class ReduceAction286
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var listnode4 = new Array[Object]
                                        var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa PType
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       assert ptypenode3 isa nullable PType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode2,
                                                ptypenode3,
                                                listnode4
                                        )
                                        node_list = psignaturenode1
-                                       p.push(p.go_to(17), node_list)
+                                       p.push(p.go_to(16), node_list)
        end
 init do end
 end
-private class ReduceAction396
+private class ReduceAction287
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa PType
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       assert ptypenode4 isa nullable PType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode3,
                                                ptypenode4,
                                                listnode5
                                        )
                                        node_list = psignaturenode1
-                                       p.push(p.go_to(17), node_list)
+                                       p.push(p.go_to(16), node_list)
        end
 init do end
 end
-private class ReduceAction397
+private class ReduceAction288
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -20389,20 +13645,20 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
+                                       assert pparamnode1 isa nullable PParam
                                        if pparamnode1 != null then
                                                listnode2.add(pparamnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(18), node_list)
+                                       p.push(p.go_to(17), node_list)
        end
 init do end
 end
-private class ReduceAction398
+private class ReduceAction289
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -20411,232 +13667,383 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
-                                       var listnode2 = nodearraylist4 
+                                       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 listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
-                                       p.push(p.go_to(18), node_list)
+                                       p.push(p.go_to(17), node_list)
        end
 init do end
 end
-private class ReduceAction399
+private class ReduceAction290
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        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(18), node_list)
+                                       p.push(p.go_to(17), node_list)
        end
 init do end
 end
-private class ReduceAction400
+private class ReduceAction291
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
+                                       assert pparamnode1 isa nullable PParam
                                        node_list = pparamnode1
-                                       p.push(p.go_to(19), node_list)
+                                       p.push(p.go_to(18), node_list)
        end
 init do end
 end
-private class ReduceAction401
+private class ReduceAction292
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var pparamnode1 = new AParam.init_aparam(
+                                       assert tidnode2 isa nullable TId
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
                                                tidnode2,
                                                null,
                                                null
                                        )
                                        node_list = pparamnode1
-                                       p.push(p.go_to(20), node_list)
+                                       p.push(p.go_to(19), node_list)
        end
 init do end
 end
-private class ReduceAction402
+private class ReduceAction293
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
+                                       assert tidnode2 isa nullable TId
                                        var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
-                                       var pparamnode1 = new AParam.init_aparam(
+                                       assert ptypenode3 isa nullable PType
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
                                                tidnode2,
                                                ptypenode3,
                                                null
                                        )
                                        node_list = pparamnode1
-                                       p.push(p.go_to(20), node_list)
+                                       p.push(p.go_to(19), node_list)
        end
 init do end
 end
-private class ReduceAction403
+private class ReduceAction294
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
+                                       assert tidnode2 isa nullable TId
                                        var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tdotdotdotnode4 = nodearraylist3
-                                       assert tdotdotdotnode4 isa TDotdotdot
-                                       var pparamnode1 = new AParam.init_aparam(
+                                       assert tdotdotdotnode4 isa nullable TDotdotdot
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
                                                tidnode2,
                                                ptypenode3,
                                                tdotdotdotnode4
                                        )
                                        node_list = pparamnode1
+                                       p.push(p.go_to(19), node_list)
+       end
+init do end
+end
+private class ReduceAction295
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = 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 ReduceAction404
+private class ReduceAction296
+special ReduceAction
+       redef meth 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,
+                                               null
+                                       )
+                                       node_list = pclosuredeclnode1
+                                       p.push(p.go_to(21), node_list)
+       end
+init do end
+end
+private class ReduceAction297
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwwithnode2 = nodearraylist2
-                                       assert tkwwithnode2 isa TKwwith
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var tkwbreaknode3 = nodearraylist2
+                                       assert tkwbreaknode3 isa nullable TKwbreak
                                        var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist5
-                                       assert psignaturenode5 isa PSignature
-                                       var pclosuredeclnode1 = new AClosureDecl.init_aclosuredecl(
+                                       assert psignaturenode5 isa nullable PSignature
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+                                               tkwwithnode2,
+                                               tkwbreaknode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               null
+                                       )
+                                       node_list = pclosuredeclnode1
+                                       p.push(p.go_to(21), node_list)
+       end
+init do end
+end
+private class ReduceAction298
+special ReduceAction
+       redef meth 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 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
+                                               psignaturenode5,
+                                               pexprnode6
                                        )
                                        node_list = pclosuredeclnode1
                                        p.push(p.go_to(21), node_list)
        end
 init do end
 end
-private class ReduceAction405
+private class ReduceAction299
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = nodearraylist2
-                                       assert tkwwithnode2 isa TKwwith
-                                       var tkwbreaknode3 = nodearraylist3
-                                       assert tkwbreaknode3 isa TKwbreak
-                                       var tidnode4 = nodearraylist5
-                                       assert tidnode4 isa TId
-                                       var psignaturenode5 = nodearraylist6
-                                       assert psignaturenode5 isa PSignature
-                                       var pclosuredeclnode1 = new AClosureDecl.init_aclosuredecl(
+                                       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
+                                               psignaturenode5,
+                                               pexprnode6
                                        )
                                        node_list = pclosuredeclnode1
                                        p.push(p.go_to(21), node_list)
        end
 init do end
 end
-private class ReduceAction406
+private class ReduceAction300
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
-                                       var ptypenode1 = new AType.init_atype(
-                                               tclassidnode2,
-                                               listnode3
+                                       var listnode4 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               tclassidnode3,
+                                               listnode4
                                        )
                                        node_list = ptypenode1
                                        p.push(p.go_to(22), node_list)
        end
 init do end
 end
-private class ReduceAction407
+private class ReduceAction301
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(22), node_list)
+       end
+init do end
+end
+private class ReduceAction302
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
-                                       var listnode3 = nodearraylist4 
-                                       assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
+                                       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
-                                                       listnode4.append(listnode3)
+                                                       listnode5.append(listnode4)
                                                end
-                                       end
-                                       var ptypenode1 = new AType.init_atype(
-                                               tclassidnode2,
-                                               listnode4
+#                                      end
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               tclassidnode3,
+                                               listnode5
                                        )
                                        node_list = ptypenode1
                                        p.push(p.go_to(22), node_list)
        end
 init do end
 end
-private class ReduceAction408
+private class ReduceAction303
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode5 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var tclassidnode3 = nodearraylist2
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist5
+                                       assert listnode4 isa Array[Object]
+#                                      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 = ptypenode1
+                                       p.push(p.go_to(22), node_list)
+       end
+init do end
+end
+private class ReduceAction304
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa PType
+                                       assert ptypenode1 isa nullable PType
                                        if ptypenode1 != null then
                                                listnode2.add(ptypenode1)
                                        end
@@ -20645,92 +14052,92 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction409
+private class ReduceAction305
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa PType
-                                       var listnode2 = nodearraylist2 
+                                       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 listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(23), node_list)
        end
 init do end
 end
-private class ReduceAction410
+private class ReduceAction306
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var ptypenode1 = nodearraylist3
-                                       assert ptypenode1 isa PType
+                                       assert ptypenode1 isa nullable PType
                                        node_list = ptypenode1
                                        p.push(p.go_to(24), node_list)
        end
 init do end
 end
-private class ReduceAction411
+private class ReduceAction307
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var ptypenode1 = nodearraylist3
-                                       assert ptypenode1 isa PType
+                                       assert ptypenode1 isa nullable PType
                                        node_list = ptypenode1
                                        p.push(p.go_to(25), node_list)
        end
 init do end
 end
-private class ReduceAction412
+private class ReduceAction308
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(26), node_list)
        end
 init do end
 end
-private class ReduceAction413
+private class ReduceAction309
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode3
                                        )
                                        node_list = pexprnode1
@@ -20738,11 +14145,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction414
+private class ReduceAction310
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -20750,20 +14157,20 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist3 
+                                       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 listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode4
                                        )
                                        node_list = pexprnode1
@@ -20771,78 +14178,86 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction415
+private class ReduceAction311
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(26), node_list)
        end
 init do end
 end
-private class ReduceAction416
+private class ReduceAction312
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(26), node_list)
        end
 init do end
 end
-private class ReduceAction417
+private class ReduceAction313
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(27), node_list)
        end
 init do end
 end
-private class ReduceAction418
+private class ReduceAction314
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction419
+private class ReduceAction315
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction420
+private class ReduceAction316
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
                                                tkwreturnnode2,
                                                null
                                        )
@@ -20851,18 +14266,18 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction421
+private class ReduceAction317
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
+                                       assert tkwreturnnode2 isa nullable TKwreturn
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
                                                tkwreturnnode2,
                                                pexprnode3
                                        )
@@ -20871,15 +14286,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction422
+private class ReduceAction318
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
                                                tkwbreaknode2,
                                                null
                                        )
@@ -20888,18 +14303,18 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction423
+private class ReduceAction319
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
+                                       assert tkwbreaknode2 isa nullable TKwbreak
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
                                                tkwbreaknode2,
                                                pexprnode3
                                        )
@@ -20908,15 +14323,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction424
+private class ReduceAction320
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa TKwabort
-                                       var pexprnode1 = new AAbortExpr.init_aabortexpr(
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
                                                tkwabortnode2
                                        )
                                        node_list = pexprnode1
@@ -20924,15 +14339,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction425
+private class ReduceAction321
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
                                                tkwcontinuenode2,
                                                null
                                        )
@@ -20941,18 +14356,18 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction426
+private class ReduceAction322
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
                                                tkwcontinuenode2,
                                                pexprnode3
                                        )
@@ -20961,76 +14376,76 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction427
+private class ReduceAction323
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction428
+private class ReduceAction324
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction429
+private class ReduceAction325
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction430
+private class ReduceAction326
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction431
+private class ReduceAction327
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
 end
-private class ReduceAction432
+private class ReduceAction328
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -21039,19 +14454,19 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21062,29 +14477,29 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction433
+private class ReduceAction329
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21095,11 +14510,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction434
+private class ReduceAction330
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -21109,28 +14524,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21141,39 +14556,39 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction435
+private class ReduceAction331
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21184,26 +14599,26 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction436
+private class ReduceAction332
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -21213,29 +14628,29 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction437
+private class ReduceAction333
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -21245,11 +14660,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction438
+private class ReduceAction334
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -21257,19 +14672,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -21279,28 +14694,28 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction439
+private class ReduceAction335
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -21310,15 +14725,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction440
+private class ReduceAction336
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa PClosureDef
+                                       assert pclosuredefnode1 isa nullable PClosureDef
                                        if pclosuredefnode1 != null then
                                                listnode2.add(pclosuredefnode1)
                                        end
@@ -21327,49 +14742,49 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction441
+private class ReduceAction337
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PClosureDef
-                                       var listnode2 = nodearraylist2 
+                                       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 listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(29), node_list)
        end
 init do end
 end
-private class ReduceAction442
+private class ReduceAction338
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -21380,32 +14795,32 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction443
+private class ReduceAction339
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -21416,11 +14831,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction444
+private class ReduceAction340
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -21428,19 +14843,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var listnode7 = new Array[Object]
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
+                                       assert pexprnode6 isa nullable PExpr
                                        if pexprnode6 != null then
                                                listnode7.add(pexprnode6)
                                        end
-                                       var pexprnode5 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode7
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -21451,11 +14866,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction445
+private class ReduceAction341
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -21464,28 +14879,28 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var listnode8 = new Array[Object]
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var listnode7 = nodearraylist5 
+                                       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 listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pexprnode5 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode8
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -21496,11 +14911,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction446
+private class ReduceAction342
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -21509,28 +14924,28 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var listnode8 = new Array[Object]
                                        var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa PExpr
+                                       assert pexprnode7 isa nullable PExpr
                                        if pexprnode7 != null then
                                                listnode8.add(pexprnode7)
                                        end
-                                       var pexprnode6 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode8
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -21541,11 +14956,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction447
+private class ReduceAction343
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -21555,37 +14970,37 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var listnode9 = new Array[Object]
                                        var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa PExpr
-                                       var listnode8 = nodearraylist6 
+                                       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 listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pexprnode6 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode9
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -21596,20 +15011,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction448
+private class ReduceAction344
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -21620,30 +15035,30 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction449
+private class ReduceAction345
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -21654,18 +15069,18 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction450
+private class ReduceAction346
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -21677,21 +15092,21 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction451
+private class ReduceAction347
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -21703,25 +15118,25 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction452
+private class ReduceAction348
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -21733,11 +15148,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction453
+private class ReduceAction349
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -21745,16 +15160,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
+                                       assert ptypenode4 isa nullable PType
                                        var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -21766,11 +15181,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction454
+private class ReduceAction350
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -21778,14 +15193,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -21796,23 +15211,23 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction455
+private class ReduceAction351
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -21823,11 +15238,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction456
+private class ReduceAction352
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -21837,23 +15252,23 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21865,34 +15280,34 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction457
+private class ReduceAction353
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21904,32 +15319,32 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction458
+private class ReduceAction354
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraAssignExpr.init_abraassignexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
                                                pexprnode2,
                                                listnode4,
                                                tassignnode5,
@@ -21940,11 +15355,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction459
+private class ReduceAction355
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -21952,14 +15367,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -21970,23 +15385,23 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction460
+private class ReduceAction356
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -21997,11 +15412,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction461
+private class ReduceAction357
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -22011,23 +15426,23 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22039,34 +15454,34 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction462
+private class ReduceAction358
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22078,32 +15493,32 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction463
+private class ReduceAction359
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa PAssignOp
+                                       assert passignopnode5 isa nullable PAssignOp
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraReassignExpr.init_abrareassignexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
                                                pexprnode2,
                                                listnode4,
                                                passignopnode5,
@@ -22114,15 +15529,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction464
+private class ReduceAction360
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tpluseqnode2 = nodearraylist1
-                                       assert tpluseqnode2 isa TPluseq
-                                       var passignopnode1 = new APlusAssignOp.init_aplusassignop(
+                                       assert tpluseqnode2 isa nullable TPluseq
+                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
                                                tpluseqnode2
                                        )
                                        node_list = passignopnode1
@@ -22130,15 +15545,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction465
+private class ReduceAction361
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tminuseqnode2 = nodearraylist1
-                                       assert tminuseqnode2 isa TMinuseq
-                                       var passignopnode1 = new AMinusAssignOp.init_aminusassignop(
+                                       assert tminuseqnode2 isa nullable TMinuseq
+                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
                                                tminuseqnode2
                                        )
                                        node_list = passignopnode1
@@ -22146,18 +15561,18 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction466
+private class ReduceAction362
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa TKwdo
+                                       assert tkwdonode2 isa nullable TKwdo
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ADoExpr.init_adoexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
                                                tkwdonode2,
                                                pexprnode3
                                        )
@@ -22166,11 +15581,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction467
+private class ReduceAction363
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -22180,14 +15595,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -22198,11 +15613,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction468
+private class ReduceAction364
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -22210,12 +15625,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -22226,11 +15641,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction469
+private class ReduceAction365
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -22241,21 +15656,21 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var listnode6 = new Array[Object]
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        if pexprnode5 != null then
                                                listnode6.add(pexprnode5)
                                        end
-                                       var pexprnode4 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode4: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode6
                                        )
                                        var pexprnode7 = nodearraylist9
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -22266,11 +15681,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction470
+private class ReduceAction366
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -22282,30 +15697,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var listnode7 = new Array[Object]
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       var listnode6 = nodearraylist8 
+                                       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 listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode4 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode4: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode7
                                        )
                                        var pexprnode8 = nodearraylist10
-                                       assert pexprnode8 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -22316,11 +15731,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction471
+private class ReduceAction367
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -22328,12 +15743,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                null,
@@ -22344,11 +15759,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction472
+private class ReduceAction368
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -22357,12 +15772,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                null,
@@ -22373,36 +15788,36 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction473
+private class ReduceAction369
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction474
+private class ReduceAction370
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        node_list = null
                                        p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction475
+private class ReduceAction371
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -22410,14 +15825,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa TKwwhile
+                                       assert tkwwhilenode2 isa nullable TKwwhile
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AWhileExpr.init_awhileexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
                                                tkwwhilenode2,
                                                pexprnode3,
                                                tkwdonode4,
@@ -22428,36 +15843,14 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction476
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var tkwdonode3 = nodearraylist3
-                                       assert tkwdonode3 isa TKwdo
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AForExpr.init_aforexpr(
-                                               pexprnode2,
-                                               tkwdonode3,
-                                               pexprnode4
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(39), node_list)
-       end
-init do end
-end
-private class ReduceAction477
+private class ReduceAction372
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
@@ -22466,98 +15859,104 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa TKwfor
+                                       assert tkwfornode2 isa nullable TKwfor
                                        var tidnode3 = nodearraylist3
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AForVardeclExpr.init_aforvardeclexpr(
+                                       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,
                                                tidnode3,
-                                               pexprnode4
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(40), node_list)
+                                       p.push(p.go_to(39), node_list)
        end
 init do end
 end
-private class ReduceAction478
+private class ReduceAction373
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                null,
                                                pexprnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(41), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction479
+private class ReduceAction374
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                tidnode3,
                                                pexprnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(41), node_list)
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction480
+private class ReduceAction375
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
+                                       assert tidnode1 isa nullable TId
                                        node_list = tidnode1
-                                       p.push(p.go_to(42), node_list)
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction481
+private class ReduceAction376
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction482
+private class ReduceAction377
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -22567,139 +15966,139 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction483
+private class ReduceAction378
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction484
+private class ReduceAction379
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ABraExpr.init_abraexpr(
+#                                      end
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
                                                pexprnode2,
                                                listnode4,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction485
+private class ReduceAction380
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       p.push(p.go_to(43), node_list)
        end
 init do end
 end
-private class ReduceAction486
+private class ReduceAction381
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -22712,18 +16111,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -22732,596 +16131,645 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       p.push(p.go_to(43), node_list)
        end
 init do end
 end
-private class ReduceAction487
+private class ReduceAction382
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(45), node_list)
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction488
+private class ReduceAction383
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(45), node_list)
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction489
+private class ReduceAction384
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(45), node_list)
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction490
+private class ReduceAction385
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(45), node_list)
        end
 init do end
 end
-private class ReduceAction491
+private class ReduceAction386
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
+                                       assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       p.push(p.go_to(45), node_list)
        end
 init do end
 end
-private class ReduceAction492
+private class ReduceAction387
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction493
+private class ReduceAction388
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction494
+private class ReduceAction389
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction495
+private class ReduceAction390
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction496
+private class ReduceAction391
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction497
+private class ReduceAction392
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction498
+private class ReduceAction393
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction499
+private class ReduceAction394
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction500
+private class ReduceAction395
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction501
+private class ReduceAction396
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                       assert ptypenode3 isa nullable PType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction502
+private class ReduceAction397
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(48), node_list)
+                                       p.push(p.go_to(47), node_list)
        end
 init do end
 end
-private class ReduceAction503
+private class ReduceAction398
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(48), node_list)
+                                       p.push(p.go_to(47), node_list)
        end
 init do end
 end
-private class ReduceAction504
+private class ReduceAction399
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(48), node_list)
+                                       p.push(p.go_to(47), node_list)
        end
 init do end
 end
-private class ReduceAction505
+private class ReduceAction400
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(49), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction506
+private class ReduceAction401
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(49), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction507
+private class ReduceAction402
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(49), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction508
+private class ReduceAction403
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(49), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction509
+private class ReduceAction404
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(50), node_list)
+                                       p.push(p.go_to(49), node_list)
        end
 init do end
 end
-private class ReduceAction510
+private class ReduceAction405
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(50), node_list)
+                                       p.push(p.go_to(49), node_list)
        end
 init do end
 end
-private class ReduceAction511
+private class ReduceAction406
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(50), node_list)
+                                       p.push(p.go_to(49), node_list)
        end
 init do end
 end
-private class ReduceAction512
+private class ReduceAction407
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       p.push(p.go_to(50), node_list)
        end
 init do end
 end
-private class ReduceAction513
+private class ReduceAction408
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(51), node_list)
+                                       p.push(p.go_to(50), node_list)
        end
 init do end
 end
-private class ReduceAction514
+private class ReduceAction409
+special ReduceAction
+       redef meth 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)
+       end
+init do end
+end
+private class ReduceAction410
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(50), node_list)
+       end
+init do end
+end
+private class ReduceAction411
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction515
+private class ReduceAction412
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction516
+private class ReduceAction413
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -23330,128 +16778,128 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction517
+private class ReduceAction414
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction518
+private class ReduceAction415
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction519
+private class ReduceAction416
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction520
+private class ReduceAction417
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -23459,94 +16907,94 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction521
+private class ReduceAction418
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction522
+private class ReduceAction419
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pexprnode1 = new ABraExpr.init_abraexpr(
+#                                      end
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
                                                pexprnode2,
                                                listnode4,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction523
+private class ReduceAction420
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -23556,36 +17004,36 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction524
+private class ReduceAction421
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -23596,23 +17044,23 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ACrangeExpr.init_acrangeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction525
+private class ReduceAction422
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -23623,203 +17071,203 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrangeExpr.init_aorangeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction526
+private class ReduceAction423
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var pexprnode1 = new AArrayExpr.init_aarrayexpr(
+#                                      end
+                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
                                                listnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction527
+private class ReduceAction424
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction528
+private class ReduceAction425
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction529
+private class ReduceAction426
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction530
+private class ReduceAction427
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction531
+private class ReduceAction428
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction532
+private class ReduceAction429
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction533
+private class ReduceAction430
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction534
+private class ReduceAction431
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction535
+private class ReduceAction432
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction536
+private class ReduceAction433
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction537
+private class ReduceAction434
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -23831,105 +17279,141 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction538
+private class ReduceAction435
+special ReduceAction
+       redef meth 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 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(51), node_list)
+       end
+init do end
+end
+private class ReduceAction436
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       if listnode2 != null then
+                                       assert pexprnode3 isa nullable PExpr
+#                                      if listnode2 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode2
                                                else
                                                        listnode4.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        if pexprnode3 != null then
                                                listnode4.add(pexprnode3)
                                        end
-                                       var pexprnode1 = new ASuperstringExpr.init_asuperstringexpr(
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
                                                listnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(53), node_list)
+                                       p.push(p.go_to(52), node_list)
        end
 init do end
 end
-private class ReduceAction539
+private class ReduceAction437
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       var listnode3 = nodearraylist2 
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
                                        var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa PExpr
-                                       if listnode2 != null then
+                                       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
+#                                      end
+#                                      if listnode3 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode3
                                                else
                                                        listnode5.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        if pexprnode4 != null then
                                                listnode5.add(pexprnode4)
                                        end
-                                       var pexprnode1 = new ASuperstringExpr.init_asuperstringexpr(
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(53), node_list)
+                                       p.push(p.go_to(52), node_list)
        end
 init do end
 end
-private class ReduceAction540
+private class ReduceAction438
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
@@ -23937,40 +17421,40 @@ special ReduceAction
                                                listnode3.add(pexprnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(54), node_list)
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction541
+private class ReduceAction439
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstartstringnode2 = nodearraylist1
-                                       assert tstartstringnode2 isa TStartString
-                                       var pexprnode1 = new AStartStringExpr.init_astartstringexpr(
+                                       assert tstartstringnode2 isa nullable TStartString
+                                       var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
                                                tstartstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(55), node_list)
+                                       p.push(p.go_to(54), node_list)
        end
 init do end
 end
-private class ReduceAction542
+private class ReduceAction440
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
@@ -23978,47 +17462,47 @@ special ReduceAction
                                                listnode3.add(pexprnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(56), node_list)
+                                       p.push(p.go_to(55), node_list)
        end
 init do end
 end
-private class ReduceAction543
+private class ReduceAction441
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tmidstringnode2 = nodearraylist1
-                                       assert tmidstringnode2 isa TMidString
-                                       var pexprnode1 = new AMidStringExpr.init_amidstringexpr(
+                                       assert tmidstringnode2 isa nullable TMidString
+                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
                                                tmidstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(57), node_list)
+                                       p.push(p.go_to(56), node_list)
        end
 init do end
 end
-private class ReduceAction544
+private class ReduceAction442
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tendstringnode2 = nodearraylist1
-                                       assert tendstringnode2 isa TEndString
-                                       var pexprnode1 = new AEndStringExpr.init_aendstringexpr(
+                                       assert tendstringnode2 isa nullable TEndString
+                                       var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
                                                tendstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(58), node_list)
+                                       p.push(p.go_to(57), node_list)
        end
 init do end
 end
-private class ReduceAction545
+private class ReduceAction443
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -24026,20 +17510,20 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(59), node_list)
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction546
+private class ReduceAction444
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -24048,54 +17532,54 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
+                                       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 listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
-                                       p.push(p.go_to(59), node_list)
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction547
+private class ReduceAction445
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        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)
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction548
+private class ReduceAction446
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var listnode1 = new Array[Object]
                                        node_list = listnode1
-                                       p.push(p.go_to(59), node_list)
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction549
+private class ReduceAction447
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -24103,20 +17587,20 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(60), node_list)
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction550
+private class ReduceAction448
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -24125,71 +17609,71 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
+                                       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 listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
-                                       p.push(p.go_to(60), node_list)
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction551
+private class ReduceAction449
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(60), node_list)
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction552
+private class ReduceAction450
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        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(60), node_list)
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction553
+private class ReduceAction451
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var listnode1 = new Array[Object]
                                        node_list = listnode1
-                                       p.push(p.go_to(60), node_list)
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction554
+private class ReduceAction452
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -24197,20 +17681,20 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(61), node_list)
+                                       p.push(p.go_to(60), node_list)
        end
 init do end
 end
-private class ReduceAction555
+private class ReduceAction453
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -24219,360 +17703,713 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
+                                       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 listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
-                                       p.push(p.go_to(61), node_list)
+                                       p.push(p.go_to(60), node_list)
        end
 init do end
 end
-private class ReduceAction556
+private class ReduceAction454
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(62), node_list)
+                                       p.push(p.go_to(61), node_list)
        end
 init do end
 end
-private class ReduceAction557
+private class ReduceAction455
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
+                                       assert tidnode1 isa nullable TId
                                        if tidnode1 != null then
                                                listnode2.add(tidnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(63), node_list)
+                                       p.push(p.go_to(62), node_list)
        end
 init do end
 end
-private class ReduceAction558
+private class ReduceAction456
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var tidnode2 = nodearraylist5
-                                       assert tidnode2 isa TId
-                                       if listnode1 != null then
+                                       assert tidnode2 isa nullable TId
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tidnode2 != null then
                                                listnode3.add(tidnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(63), node_list)
+                                       p.push(p.go_to(62), node_list)
        end
 init do end
 end
-private class ReduceAction559
+private class ReduceAction457
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa TClassid
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
                                                listnode2,
                                                tclassidnode3
                                        )
                                        node_list = pqualifiednode1
-                                       p.push(p.go_to(64), node_list)
+                                       p.push(p.go_to(63), node_list)
        end
 init do end
 end
-private class ReduceAction560
+private class ReduceAction458
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var tclassidnode4 = nodearraylist2
-                                       assert tclassidnode4 isa TClassid
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
+                                       assert tclassidnode4 isa nullable TClassid
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
                                                listnode3,
                                                tclassidnode4
                                        )
                                        node_list = pqualifiednode1
-                                       p.push(p.go_to(64), node_list)
+                                       p.push(p.go_to(63), node_list)
        end
 init do end
 end
-private class ReduceAction561
+private class ReduceAction459
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
+#                                      end
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
                                                listnode3,
                                                null
                                        )
                                        node_list = pqualifiednode1
-                                       p.push(p.go_to(64), node_list)
+                                       p.push(p.go_to(63), node_list)
        end
 init do end
 end
-private class ReduceAction562
+private class ReduceAction460
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
+                                       assert tidnode1 isa nullable TId
                                        node_list = tidnode1
-                                       p.push(p.go_to(65), node_list)
+                                       p.push(p.go_to(64), node_list)
        end
 init do end
 end
-private class ReduceAction563
+private class ReduceAction461
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tclassidnode1 = nodearraylist1
-                                       assert tclassidnode1 isa TClassid
+                                       assert tclassidnode1 isa nullable TClassid
                                        node_list = tclassidnode1
-                                       p.push(p.go_to(66), node_list)
+                                       p.push(p.go_to(65), node_list)
        end
 init do end
 end
-private class ReduceAction564
+private class ReduceAction462
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       p.push(p.go_to(67), node_list)
+                                       p.push(p.go_to(66), node_list)
        end
 init do end
 end
-private class ReduceAction565
+private class ReduceAction463
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       p.push(p.go_to(67), node_list)
+                                       p.push(p.go_to(66), node_list)
        end
 init do end
 end
-private class ReduceAction566
+private class ReduceAction464
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var pdocnode1 = new ADoc.init_adoc(
+#                                      end
+                                       var pdocnode1: nullable ADoc = new ADoc.init_adoc(
                                                listnode3
                                        )
                                        node_list = pdocnode1
-                                       p.push(p.go_to(68), node_list)
+                                       p.push(p.go_to(67), node_list)
        end
 init do end
 end
-private class ReduceAction567
+private class ReduceAction465
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist2 
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var pdocnode1 = new ADoc.init_adoc(
+#                                      end
+                                       var pdocnode1: nullable ADoc = new ADoc.init_adoc(
                                                listnode3
                                        )
                                        node_list = pdocnode1
-                                       p.push(p.go_to(68), node_list)
+                                       p.push(p.go_to(67), node_list)
        end
 init do end
 end
-private class ReduceAction568
+private class ReduceAction466
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        node_list = null
-                                       p.push(p.go_to(68), node_list)
+                                       p.push(p.go_to(67), node_list)
        end
 init do end
 end
-private class ReduceAction569
+private class ReduceAction467
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        node_list = null
+                                       p.push(p.go_to(68), node_list)
+       end
+init do end
+end
+private class ReduceAction468
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode1 = nodearraylist1
+                                       assert pdocnode1 isa nullable PDoc
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(68), node_list)
+       end
+init do end
+end
+private class ReduceAction469
+special ReduceAction
+       redef meth 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)
+       end
+init do end
+end
+private class ReduceAction470
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       p.push(p.go_to(69), node_list)
+       end
+init do end
+end
+private class ReduceAction471
+special ReduceAction
+       redef meth 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 ReduceAction570
+private class ReduceAction472
+special ReduceAction
+       redef meth 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)
+       end
+init do end
+end
+private class ReduceAction473
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
+       end
+init do end
+end
+private class ReduceAction474
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
+       end
+init do end
+end
+private class ReduceAction475
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
+       end
+init do end
+end
+private class ReduceAction476
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
+       end
+init do end
+end
+private class ReduceAction477
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
+       end
+init do end
+end
+private class ReduceAction478
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pdocnode1 = nodearraylist1
-                                       assert pdocnode1 isa PDoc
-                                       node_list = pdocnode1
-                                       p.push(p.go_to(69), node_list)
+                                       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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction571
+private class ReduceAction479
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
-                                       p.push(p.go_to(70), node_list)
+                                       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
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction572
+private class ReduceAction480
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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
-                                       p.push(p.go_to(70), node_list)
+                                       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 ReduceAction573
+private class ReduceAction481
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       p.push(p.go_to(70), node_list)
+                                       var listnode4 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               tclassidnode3,
+                                               listnode4
+                                       )
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(72), node_list)
        end
 init do end
 end
-private class ReduceAction574
+private class ReduceAction482
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
-                                       var ptypenode1 = new AType.init_atype(
-                                               tclassidnode2,
-                                               listnode3
+                                       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 = ptypenode1
-                                       p.push(p.go_to(71), node_list)
+                                       p.push(p.go_to(72), node_list)
        end
 init do end
 end
-private class ReduceAction575
+private class ReduceAction483
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(72), node_list)
+                                       p.push(p.go_to(73), node_list)
        end
 init do end
 end
-private class ReduceAction576
+private class ReduceAction484
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -24582,99 +18419,99 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(72), node_list)
+                                       p.push(p.go_to(73), node_list)
        end
 init do end
 end
-private class ReduceAction577
+private class ReduceAction485
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(72), node_list)
+                                       p.push(p.go_to(73), node_list)
        end
 init do end
 end
-private class ReduceAction578
+private class ReduceAction486
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(73), node_list)
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction579
+private class ReduceAction487
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -24687,18 +18524,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -24707,596 +18544,645 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(73), node_list)
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction580
+private class ReduceAction488
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(75), node_list)
        end
 init do end
 end
-private class ReduceAction581
+private class ReduceAction489
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(75), node_list)
        end
 init do end
 end
-private class ReduceAction582
+private class ReduceAction490
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(75), node_list)
        end
 init do end
 end
-private class ReduceAction583
+private class ReduceAction491
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(75), node_list)
+                                       p.push(p.go_to(76), node_list)
        end
 init do end
 end
-private class ReduceAction584
+private class ReduceAction492
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
+                                       assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(75), node_list)
+                                       p.push(p.go_to(76), node_list)
        end
 init do end
 end
-private class ReduceAction585
+private class ReduceAction493
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction586
+private class ReduceAction494
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction587
+private class ReduceAction495
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction588
+private class ReduceAction496
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction589
+private class ReduceAction497
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction590
+private class ReduceAction498
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction591
+private class ReduceAction499
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction592
+private class ReduceAction500
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction593
+private class ReduceAction501
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction594
+private class ReduceAction502
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                       assert ptypenode3 isa nullable PType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction595
+private class ReduceAction503
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction596
+private class ReduceAction504
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction597
+private class ReduceAction505
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction598
+private class ReduceAction506
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(78), node_list)
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction599
+private class ReduceAction507
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(78), node_list)
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction600
+private class ReduceAction508
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(78), node_list)
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction601
+private class ReduceAction509
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(78), node_list)
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction602
+private class ReduceAction510
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(79), node_list)
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction603
+private class ReduceAction511
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(79), node_list)
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction604
+private class ReduceAction512
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(79), node_list)
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction605
+private class ReduceAction513
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(80), node_list)
+                                       p.push(p.go_to(81), node_list)
        end
 init do end
 end
-private class ReduceAction606
+private class ReduceAction514
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(80), node_list)
+                                       p.push(p.go_to(81), node_list)
+       end
+init do end
+end
+private class ReduceAction515
+special ReduceAction
+       redef meth 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(81), node_list)
+       end
+init do end
+end
+private class ReduceAction516
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(81), node_list)
        end
 init do end
 end
-private class ReduceAction607
+private class ReduceAction517
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction608
+private class ReduceAction518
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction609
+private class ReduceAction519
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -25305,128 +19191,128 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction610
+private class ReduceAction520
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction611
+private class ReduceAction521
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction612
+private class ReduceAction522
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction613
+private class ReduceAction523
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -25434,64 +19320,64 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction614
+private class ReduceAction524
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction615
+private class ReduceAction525
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -25501,192 +19387,192 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction616
+private class ReduceAction526
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction617
+private class ReduceAction527
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction618
+private class ReduceAction528
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction619
+private class ReduceAction529
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction620
+private class ReduceAction530
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction621
+private class ReduceAction531
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction622
+private class ReduceAction532
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction623
+private class ReduceAction533
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction624
+private class ReduceAction534
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction625
+private class ReduceAction535
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction626
+private class ReduceAction536
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -25698,62 +19584,98 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(81), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction627
+private class ReduceAction537
+special ReduceAction
+       redef meth 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 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(82), node_list)
+       end
+init do end
+end
+private class ReduceAction538
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction628
+private class ReduceAction539
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction629
+private class ReduceAction540
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -25761,273 +19683,281 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist3 
+                                       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 listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction630
+private class ReduceAction541
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(82), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction631
+private class ReduceAction542
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(82), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction632
+private class ReduceAction543
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction633
+private class ReduceAction544
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction634
+private class ReduceAction545
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
                                                tkwreturnnode2,
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction635
+private class ReduceAction546
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
+                                       assert tkwreturnnode2 isa nullable TKwreturn
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
                                                tkwreturnnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction636
+private class ReduceAction547
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
                                                tkwbreaknode2,
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction637
+private class ReduceAction548
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
+                                       assert tkwbreaknode2 isa nullable TKwbreak
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
                                                tkwbreaknode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction638
+private class ReduceAction549
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa TKwabort
-                                       var pexprnode1 = new AAbortExpr.init_aabortexpr(
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
                                                tkwabortnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction639
+private class ReduceAction550
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
                                                tkwcontinuenode2,
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction640
+private class ReduceAction551
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
                                                tkwcontinuenode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction641
+private class ReduceAction552
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction642
+private class ReduceAction553
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction643
+private class ReduceAction554
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction644
+private class ReduceAction555
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction645
+private class ReduceAction556
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction646
+private class ReduceAction557
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -26036,67 +19966,67 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction647
+private class ReduceAction558
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction648
+private class ReduceAction559
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -26106,147 +20036,147 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction649
+private class ReduceAction560
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction650
+private class ReduceAction561
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction651
+private class ReduceAction562
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction652
+private class ReduceAction563
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -26254,177 +20184,177 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction653
+private class ReduceAction564
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction654
+private class ReduceAction565
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa PClosureDef
+                                       assert pclosuredefnode1 isa nullable PClosureDef
                                        if pclosuredefnode1 != null then
                                                listnode2.add(pclosuredefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction655
+private class ReduceAction566
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PClosureDef
-                                       var listnode2 = nodearraylist2 
+                                       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 listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction656
+private class ReduceAction567
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
                                                pexprnode5
                                        )
                                        node_list = pclosuredefnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction657
+private class ReduceAction568
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
                                                pexprnode6
                                        )
                                        node_list = pclosuredefnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction658
+private class ReduceAction569
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -26432,25 +20362,25 @@ special ReduceAction
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(86), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction659
+private class ReduceAction570
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -26458,29 +20388,29 @@ special ReduceAction
                                                null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(86), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction660
+private class ReduceAction571
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -26488,15 +20418,15 @@ special ReduceAction
                                                pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(86), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction661
+private class ReduceAction572
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -26504,16 +20434,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
+                                       assert ptypenode4 isa nullable PType
                                        var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -26521,15 +20451,15 @@ special ReduceAction
                                                pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(86), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction662
+private class ReduceAction573
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -26537,56 +20467,56 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
                                                pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction663
+private class ReduceAction574
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
                                                pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction664
+private class ReduceAction575
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -26596,23 +20526,23 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -26620,38 +20550,38 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction665
+private class ReduceAction576
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -26659,51 +20589,51 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction666
+private class ReduceAction577
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraAssignExpr.init_abraassignexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
                                                pexprnode2,
                                                listnode4,
                                                tassignnode5,
                                                pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction667
+private class ReduceAction578
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -26711,56 +20641,56 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
                                                pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction668
+private class ReduceAction579
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
                                                pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction669
+private class ReduceAction580
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -26770,23 +20700,23 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -26794,38 +20724,38 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction670
+private class ReduceAction581
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -26833,71 +20763,71 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction671
+private class ReduceAction582
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa PAssignOp
+                                       assert passignopnode5 isa nullable PAssignOp
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraReassignExpr.init_abrareassignexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
                                                pexprnode2,
                                                listnode4,
                                                passignopnode5,
                                                pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction672
+private class ReduceAction583
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa TKwdo
+                                       assert tkwdonode2 isa nullable TKwdo
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ADoExpr.init_adoexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
                                                tkwdonode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction673
+private class ReduceAction584
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -26907,29 +20837,29 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
                                                pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(89), node_list)
+                                       p.push(p.go_to(90), node_list)
        end
 init do end
 end
-private class ReduceAction674
+private class ReduceAction585
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -26937,112 +20867,124 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa TKwwhile
+                                       assert tkwwhilenode2 isa nullable TKwwhile
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AWhileExpr.init_awhileexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
                                                tkwwhilenode2,
                                                pexprnode3,
                                                tkwdonode4,
                                                pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction675
+private class ReduceAction586
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
-                                       var tkwdonode3 = nodearraylist3
-                                       assert tkwdonode3 isa TKwdo
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AForExpr.init_aforexpr(
-                                               pexprnode2,
-                                               tkwdonode3,
-                                               pexprnode4
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var tidnode3 = nodearraylist3
+                                       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,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(91), node_list)
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction676
+private class ReduceAction587
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                null,
                                                pexprnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(92), node_list)
+                                       p.push(p.go_to(93), node_list)
        end
 init do end
 end
-private class ReduceAction677
+private class ReduceAction588
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                tidnode3,
                                                pexprnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(92), node_list)
+                                       p.push(p.go_to(93), node_list)
        end
 init do end
 end
-private class ReduceAction678
+private class ReduceAction589
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction679
+private class ReduceAction590
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -27052,139 +20994,139 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction680
+private class ReduceAction591
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction681
+private class ReduceAction592
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ABraExpr.init_abraexpr(
+#                                      end
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
                                                pexprnode2,
                                                listnode4,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction682
+private class ReduceAction593
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction683
+private class ReduceAction594
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -27194,149 +21136,99 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction684
+private class ReduceAction595
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
-       end
-init do end
-end
-private class ReduceAction685
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
-                                       var ptypenode1 = new AType.init_atype(
-                                               tclassidnode2,
-                                               listnode3
-                                       )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(95), node_list)
-       end
-init do end
-end
-private class ReduceAction686
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: 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 tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
-                                       var listnode3 = nodearraylist4 
-                                       assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-                                       end
-                                       var ptypenode1 = new AType.init_atype(
-                                               tclassidnode2,
-                                               listnode4
-                                       )
-                                       node_list = ptypenode1
                                        p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction687
+private class ReduceAction596
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(96), node_list)
        end
 init do end
 end
-private class ReduceAction688
+private class ReduceAction597
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -27346,28 +21238,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -27378,39 +21270,39 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction689
+private class ReduceAction598
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -27421,24 +21313,24 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction690
+private class ReduceAction599
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(97), node_list)
        end
 init do end
 end
-private class ReduceAction691
+private class ReduceAction600
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -27451,18 +21343,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -27475,33 +21367,33 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction692
+private class ReduceAction601
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(98), node_list)
        end
 init do end
 end
-private class ReduceAction693
+private class ReduceAction602
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27510,20 +21402,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction694
+private class ReduceAction603
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27532,32 +21424,32 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction695
+private class ReduceAction604
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(99), node_list)
        end
 init do end
 end
-private class ReduceAction696
+private class ReduceAction605
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
+                                       assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -27566,33 +21458,33 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction697
+private class ReduceAction606
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction698
+private class ReduceAction607
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27601,20 +21493,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction699
+private class ReduceAction608
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27623,20 +21515,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction700
+private class ReduceAction609
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27645,20 +21537,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction701
+private class ReduceAction610
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27667,20 +21559,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction702
+private class ReduceAction611
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27689,20 +21581,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction703
+private class ReduceAction612
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27711,20 +21603,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction704
+private class ReduceAction613
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27733,20 +21625,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction705
+private class ReduceAction614
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27755,20 +21647,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction706
+private class ReduceAction615
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                       assert ptypenode3 isa nullable PType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -27777,33 +21669,33 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction707
+private class ReduceAction616
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(101), node_list)
        end
 init do end
 end
-private class ReduceAction708
+private class ReduceAction617
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27812,20 +21704,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction709
+private class ReduceAction618
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27834,33 +21726,33 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction710
+private class ReduceAction619
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(102), node_list)
        end
 init do end
 end
-private class ReduceAction711
+private class ReduceAction620
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27869,20 +21761,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction712
+private class ReduceAction621
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27891,20 +21783,20 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction713
+private class ReduceAction622
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -27913,32 +21805,32 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction714
+private class ReduceAction623
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction715
+private class ReduceAction624
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -27947,19 +21839,19 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction716
+private class ReduceAction625
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -27968,43 +21860,43 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction717
+private class ReduceAction626
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(104), node_list)
        end
 init do end
 end
-private class ReduceAction718
+private class ReduceAction627
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -28015,20 +21907,69 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction719
+private class ReduceAction628
+special ReduceAction
+       redef meth 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(104), node_list)
+       end
+init do end
+end
+private class ReduceAction629
+special ReduceAction
+       redef meth 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
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(104), node_list)
+       end
+init do end
+end
+private class ReduceAction630
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -28037,17 +21978,17 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction720
+private class ReduceAction631
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -28056,11 +21997,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction721
+private class ReduceAction632
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -28069,19 +22010,19 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -28092,29 +22033,29 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction722
+private class ReduceAction633
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -28125,26 +22066,26 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction723
+private class ReduceAction634
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -28154,29 +22095,29 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction724
+private class ReduceAction635
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -28186,11 +22127,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction725
+private class ReduceAction636
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -28198,19 +22139,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -28220,28 +22161,28 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction726
+private class ReduceAction637
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -28251,11 +22192,11 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction727
+private class ReduceAction638
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -28265,21 +22206,21 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -28290,15 +22231,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction728
+private class ReduceAction639
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -28306,15 +22247,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction729
+private class ReduceAction640
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -28322,15 +22263,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction730
+private class ReduceAction641
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -28338,15 +22279,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction731
+private class ReduceAction642
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -28354,15 +22295,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction732
+private class ReduceAction643
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -28370,15 +22311,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction733
+private class ReduceAction644
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -28386,15 +22327,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction734
+private class ReduceAction645
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -28402,15 +22343,15 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction735
+private class ReduceAction646
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -28418,24 +22359,24 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction736
+private class ReduceAction647
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction737
+private class ReduceAction648
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -28447,12 +22388,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -28462,42 +22403,60 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction738
+private class ReduceAction649
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode3 = new Array[Object]
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
-                                       var ptypenode1 = new AType.init_atype(
-                                               tclassidnode2,
-                                               listnode3
+                                       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
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(106), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction739
+private class ReduceAction650
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(107), node_list)
+                                       p.push(p.go_to(106), node_list)
        end
 init do end
 end
-private class ReduceAction740
+private class ReduceAction651
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -28507,99 +22466,99 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(107), node_list)
+                                       p.push(p.go_to(106), node_list)
        end
 init do end
 end
-private class ReduceAction741
+private class ReduceAction652
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(107), node_list)
+                                       p.push(p.go_to(106), node_list)
        end
 init do end
 end
-private class ReduceAction742
+private class ReduceAction653
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(108), node_list)
+                                       p.push(p.go_to(107), node_list)
        end
 init do end
 end
-private class ReduceAction743
+private class ReduceAction654
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -28612,18 +22571,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -28632,702 +22591,726 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(108), node_list)
+                                       p.push(p.go_to(107), node_list)
        end
 init do end
 end
-private class ReduceAction744
+private class ReduceAction655
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(109), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction745
+private class ReduceAction656
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(109), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction746
+private class ReduceAction657
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(109), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction747
+private class ReduceAction658
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(109), node_list)
        end
 init do end
 end
-private class ReduceAction748
+private class ReduceAction659
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
+                                       assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(109), node_list)
        end
 init do end
 end
-private class ReduceAction749
+private class ReduceAction660
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction750
+private class ReduceAction661
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction751
+private class ReduceAction662
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction752
+private class ReduceAction663
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction753
+private class ReduceAction664
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction754
+private class ReduceAction665
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction755
+private class ReduceAction666
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction756
+private class ReduceAction667
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction757
+private class ReduceAction668
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction758
+private class ReduceAction669
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                       assert ptypenode3 isa nullable PType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction759
+private class ReduceAction670
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction760
+private class ReduceAction671
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction761
+private class ReduceAction672
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction762
+private class ReduceAction673
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction763
+private class ReduceAction674
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction764
+private class ReduceAction675
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction765
+private class ReduceAction676
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction766
+private class ReduceAction677
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(114), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction767
+private class ReduceAction678
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(114), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction768
+private class ReduceAction679
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(114), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction769
+private class ReduceAction680
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(114), node_list)
        end
 init do end
 end
-private class ReduceAction770
+private class ReduceAction681
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(114), node_list)
+       end
+init do end
+end
+private class ReduceAction682
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       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 = nodearraylist3
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
+                                               pexprnode3,
+                                               tattridnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(114), node_list)
        end
 init do end
 end
-private class ReduceAction771
+private class ReduceAction683
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist2
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction772
+private class ReduceAction684
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist3 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction773
+private class ReduceAction685
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction774
+private class ReduceAction686
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction775
+private class ReduceAction687
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist2
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction776
+private class ReduceAction688
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -29337,177 +23320,177 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction777
+private class ReduceAction689
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction778
+private class ReduceAction690
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction779
+private class ReduceAction691
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction780
+private class ReduceAction692
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction781
+private class ReduceAction693
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction782
+private class ReduceAction694
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction783
+private class ReduceAction695
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction784
+private class ReduceAction696
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction785
+private class ReduceAction697
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction786
+private class ReduceAction698
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -29519,66 +23502,102 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(116), node_list)
+                                       p.push(p.go_to(115), node_list)
+       end
+init do end
+end
+private class ReduceAction699
+special ReduceAction
+       redef meth 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 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(115), node_list)
        end
 init do end
 end
-private class ReduceAction787
+private class ReduceAction700
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(117), node_list)
+                                       p.push(p.go_to(116), node_list)
        end
 init do end
 end
-private class ReduceAction788
+private class ReduceAction701
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var pexprnode1 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var node_list: nullable Object = null
+                                       var pexprnode1: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(117), node_list)
+                                       p.push(p.go_to(116), node_list)
        end
 init do end
 end
-private class ReduceAction789
+private class ReduceAction702
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(118), node_list)
+                                       p.push(p.go_to(117), node_list)
        end
 init do end
 end
-private class ReduceAction790
+private class ReduceAction703
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -29588,99 +23607,99 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(118), node_list)
+                                       p.push(p.go_to(117), node_list)
        end
 init do end
 end
-private class ReduceAction791
+private class ReduceAction704
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(118), node_list)
+                                       p.push(p.go_to(117), node_list)
        end
 init do end
 end
-private class ReduceAction792
+private class ReduceAction705
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(119), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction793
+private class ReduceAction706
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -29690,746 +23709,746 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(119), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction794
+private class ReduceAction707
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
                                                listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(119), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction795
+private class ReduceAction708
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pimportnode1 = nodearraylist1
-                                       assert pimportnode1 isa PImport
+                                       assert pimportnode1 isa nullable PImport
                                        if pimportnode1 != null then
                                                listnode2.add(pimportnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(120), node_list)
+                                       p.push(p.go_to(119), node_list)
        end
 init do end
 end
-private class ReduceAction796
+private class ReduceAction709
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pimportnode2 = nodearraylist2
-                                       assert pimportnode2 isa PImport
-                                       if listnode1 != null then
+                                       assert pimportnode2 isa nullable PImport
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pimportnode2 != null then
                                                listnode3.add(pimportnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(120), node_list)
+                                       p.push(p.go_to(119), node_list)
        end
 init do end
 end
-private class ReduceAction797
+private class ReduceAction710
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclassdefnode1 = nodearraylist1
-                                       assert pclassdefnode1 isa PClassdef
+                                       assert pclassdefnode1 isa nullable PClassdef
                                        if pclassdefnode1 != null then
                                                listnode2.add(pclassdefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(121), node_list)
+                                       p.push(p.go_to(120), node_list)
        end
 init do end
 end
-private class ReduceAction798
+private class ReduceAction711
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pclassdefnode2 = nodearraylist2
-                                       assert pclassdefnode2 isa PClassdef
-                                       if listnode1 != null then
+                                       assert pclassdefnode2 isa nullable PClassdef
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode2 != null then
                                                listnode3.add(pclassdefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(121), node_list)
+                                       p.push(p.go_to(120), node_list)
        end
 init do end
 end
-private class ReduceAction799
+private class ReduceAction712
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var psuperclassnode1 = nodearraylist1
-                                       assert psuperclassnode1 isa PSuperclass
+                                       assert psuperclassnode1 isa nullable PSuperclass
                                        if psuperclassnode1 != null then
                                                listnode2.add(psuperclassnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(122), node_list)
+                                       p.push(p.go_to(121), node_list)
        end
 init do end
 end
-private class ReduceAction800
+private class ReduceAction713
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var psuperclassnode2 = nodearraylist2
-                                       assert psuperclassnode2 isa PSuperclass
-                                       if listnode1 != null then
+                                       assert psuperclassnode2 isa nullable PSuperclass
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if psuperclassnode2 != null then
                                                listnode3.add(psuperclassnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(122), node_list)
+                                       p.push(p.go_to(121), node_list)
        end
 init do end
 end
-private class ReduceAction801
+private class ReduceAction714
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist1
-                                       assert pformaldefnode1 isa PFormaldef
+                                       assert pformaldefnode1 isa nullable PFormaldef
                                        if pformaldefnode1 != null then
                                                listnode2.add(pformaldefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(123), node_list)
+                                       p.push(p.go_to(122), node_list)
        end
 init do end
 end
-private class ReduceAction802
+private class ReduceAction715
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pformaldefnode2 = nodearraylist2
-                                       assert pformaldefnode2 isa PFormaldef
-                                       if listnode1 != null then
+                                       assert pformaldefnode2 isa nullable PFormaldef
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pformaldefnode2 != null then
                                                listnode3.add(pformaldefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(123), node_list)
+                                       p.push(p.go_to(122), node_list)
        end
 init do end
 end
-private class ReduceAction803
+private class ReduceAction716
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
+                                       assert ppropdefnode1 isa nullable PPropdef
                                        if ppropdefnode1 != null then
                                                listnode2.add(ppropdefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(124), node_list)
+                                       p.push(p.go_to(123), node_list)
        end
 init do end
 end
-private class ReduceAction804
+private class ReduceAction717
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var ppropdefnode2 = nodearraylist2
-                                       assert ppropdefnode2 isa PPropdef
-                                       if listnode1 != null then
+                                       assert ppropdefnode2 isa nullable PPropdef
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(124), node_list)
+                                       p.push(p.go_to(123), node_list)
        end
 init do end
 end
-private class ReduceAction805
+private class ReduceAction718
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
-                                       if ppropdefnode1 != null then
-                                               listnode2.add(ppropdefnode1)
+                                       var pparamnode1 = nodearraylist1
+                                       assert pparamnode1 isa nullable PParam
+                                       if pparamnode1 != null then
+                                               listnode2.add(pparamnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(125), node_list)
+                                       p.push(p.go_to(124), node_list)
        end
 init do end
 end
-private class ReduceAction806
+private class ReduceAction719
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       var ppropdefnode2 = nodearraylist2
-                                       assert ppropdefnode2 isa PPropdef
-                                       if listnode1 != null then
+                                       var pparamnode2 = nodearraylist2
+                                       assert pparamnode2 isa nullable PParam
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
-                                       if ppropdefnode2 != null then
-                                               listnode3.add(ppropdefnode2)
+#                                      end
+                                       if pparamnode2 != null then
+                                               listnode3.add(pparamnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(125), node_list)
+                                       p.push(p.go_to(124), node_list)
        end
 init do end
 end
-private class ReduceAction807
+private class ReduceAction720
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclosuredeclnode1 = nodearraylist1
-                                       assert pclosuredeclnode1 isa PClosureDecl
+                                       assert pclosuredeclnode1 isa nullable PClosureDecl
                                        if pclosuredeclnode1 != null then
                                                listnode2.add(pclosuredeclnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(126), node_list)
+                                       p.push(p.go_to(125), node_list)
        end
 init do end
 end
-private class ReduceAction808
+private class ReduceAction721
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pclosuredeclnode2 = nodearraylist2
-                                       assert pclosuredeclnode2 isa PClosureDecl
-                                       if listnode1 != null then
+                                       assert pclosuredeclnode2 isa nullable PClosureDecl
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pclosuredeclnode2 != null then
                                                listnode3.add(pclosuredeclnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(126), node_list)
-       end
-init do end
-end
-private class ReduceAction809
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pparamnode1 = nodearraylist1
-                                       assert pparamnode1 isa PParam
-                                       if pparamnode1 != null then
-                                               listnode2.add(pparamnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(127), node_list)
-       end
-init do end
-end
-private class ReduceAction810
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
-                                       assert listnode1 isa Array[Object]
-                                       var pparamnode2 = nodearraylist2
-                                       assert pparamnode2 isa PParam
-                                       if listnode1 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode1
-                                               else
-                                                       listnode3.append(listnode1)
-                                               end
-                                       end
-                                       if pparamnode2 != null then
-                                               listnode3.add(pparamnode2)
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(127), node_list)
+                                       p.push(p.go_to(125), node_list)
        end
 init do end
 end
-private class ReduceAction811
+private class ReduceAction722
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa PType
+                                       assert ptypenode1 isa nullable PType
                                        if ptypenode1 != null then
                                                listnode2.add(ptypenode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(128), node_list)
+                                       p.push(p.go_to(126), node_list)
        end
 init do end
 end
-private class ReduceAction812
+private class ReduceAction723
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var ptypenode2 = nodearraylist2
-                                       assert ptypenode2 isa PType
-                                       if listnode1 != null then
+                                       assert ptypenode2 isa nullable PType
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if ptypenode2 != null then
                                                listnode3.add(ptypenode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(128), node_list)
+                                       p.push(p.go_to(126), node_list)
        end
 init do end
 end
-private class ReduceAction813
+private class ReduceAction724
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(129), node_list)
+                                       p.push(p.go_to(127), node_list)
        end
 init do end
 end
-private class ReduceAction814
+private class ReduceAction725
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       if listnode1 != null then
+                                       assert pexprnode2 isa nullable PExpr
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(129), node_list)
+                                       p.push(p.go_to(127), node_list)
        end
 init do end
 end
-private class ReduceAction815
+private class ReduceAction726
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       if listnode1 != null then
+#                                      if listnode1 != null then
                                                if listnode2.is_empty then
                                                        listnode2 = listnode1
                                                else
                                                        listnode2.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode2
-                                       p.push(p.go_to(130), node_list)
+                                       p.push(p.go_to(128), node_list)
        end
 init do end
 end
-private class ReduceAction816
+private class ReduceAction727
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       var listnode2 = nodearraylist2 
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
-                                       if listnode1 != null then
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
-                                       if listnode2 != null then
+#                                      end
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
-                                       p.push(p.go_to(130), node_list)
+                                       p.push(p.go_to(128), node_list)
        end
 init do end
 end
-private class ReduceAction817
+private class ReduceAction728
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(131), node_list)
+                                       p.push(p.go_to(129), node_list)
        end
 init do end
 end
-private class ReduceAction818
+private class ReduceAction729
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       if listnode1 != null then
+                                       assert pexprnode2 isa nullable PExpr
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(131), node_list)
+                                       p.push(p.go_to(129), node_list)
        end
 init do end
 end
-private class ReduceAction819
+private class ReduceAction730
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
+                                       assert tidnode1 isa nullable TId
                                        if tidnode1 != null then
                                                listnode2.add(tidnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(132), node_list)
+                                       p.push(p.go_to(130), node_list)
        end
 init do end
 end
-private class ReduceAction820
+private class ReduceAction731
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var tidnode2 = nodearraylist2
-                                       assert tidnode2 isa TId
-                                       if listnode1 != null then
+                                       assert tidnode2 isa nullable TId
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tidnode2 != null then
                                                listnode3.add(tidnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(132), node_list)
+                                       p.push(p.go_to(130), node_list)
        end
 init do end
 end
-private class ReduceAction821
+private class ReduceAction732
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var tcommentnode1 = nodearraylist1
-                                       assert tcommentnode1 isa TComment
+                                       assert tcommentnode1 isa nullable TComment
                                        if tcommentnode1 != null then
                                                listnode2.add(tcommentnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(133), node_list)
+                                       p.push(p.go_to(131), node_list)
        end
 init do end
 end
-private class ReduceAction822
+private class ReduceAction733
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var tcommentnode2 = nodearraylist2
-                                       assert tcommentnode2 isa TComment
-                                       if listnode1 != null then
+                                       assert tcommentnode2 isa nullable TComment
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tcommentnode2 != null then
                                                listnode3.add(tcommentnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(133), node_list)
+                                       p.push(p.go_to(131), node_list)
        end
 init do end
 end
-private class ReduceAction823
+private class ReduceAction734
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var teolnode1 = nodearraylist1
-                                       assert teolnode1 isa TEol
+                                       assert teolnode1 isa nullable TEol
                                        if teolnode1 != null then
                                                listnode2.add(teolnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(134), node_list)
+                                       p.push(p.go_to(132), node_list)
        end
 init do end
 end
-private class ReduceAction824
+private class ReduceAction735
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var teolnode2 = nodearraylist2
-                                       assert teolnode2 isa TEol
-                                       if listnode1 != null then
+                                       assert teolnode2 isa nullable TEol
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if teolnode2 != null then
                                                listnode3.add(teolnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(134), node_list)
+                                       p.push(p.go_to(132), node_list)
+       end
+init do end
+end
+private class ReduceAction736
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var ppropdefnode1 = nodearraylist1
+                                       assert ppropdefnode1 isa nullable PPropdef
+                                       if ppropdefnode1 != null then
+                                               listnode2.add(ppropdefnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(133), node_list)
+       end
+init do end
+end
+private class ReduceAction737
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       var ppropdefnode2 = nodearraylist2
+                                       assert ppropdefnode2 isa nullable PPropdef
+#                                      if listnode1 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode1
+                                               else
+                                                       listnode3.append(listnode1)
+                                               end
+#                                      end
+                                       if ppropdefnode2 != null then
+                                               listnode3.add(ppropdefnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(133), node_list)
        end
 init do end
 end