parser: Add 'fun' and 'var'-as-attr keyword
[nit.git] / src / parser / parser.nit
index e54031c..4ada113 100644 (file)
@@ -731,7 +731,158 @@ special ParserTable
                        new ReduceAction569,
                        new ReduceAction570,
                        new ReduceAction571,
-                       new ReduceAction572
+                       new ReduceAction572,
+                       new ReduceAction573,
+                       new ReduceAction574,
+                       new ReduceAction575,
+                       new ReduceAction576,
+                       new ReduceAction577,
+                       new ReduceAction578,
+                       new ReduceAction579,
+                       new ReduceAction580,
+                       new ReduceAction581,
+                       new ReduceAction582,
+                       new ReduceAction583,
+                       new ReduceAction584,
+                       new ReduceAction585,
+                       new ReduceAction586,
+                       new ReduceAction587,
+                       new ReduceAction588,
+                       new ReduceAction589,
+                       new ReduceAction590,
+                       new ReduceAction591,
+                       new ReduceAction592,
+                       new ReduceAction593,
+                       new ReduceAction594,
+                       new ReduceAction595,
+                       new ReduceAction596,
+                       new ReduceAction597,
+                       new ReduceAction598,
+                       new ReduceAction599,
+                       new ReduceAction600,
+                       new ReduceAction601,
+                       new ReduceAction602,
+                       new ReduceAction603,
+                       new ReduceAction604,
+                       new ReduceAction605,
+                       new ReduceAction606,
+                       new ReduceAction607,
+                       new ReduceAction608,
+                       new ReduceAction609,
+                       new ReduceAction610,
+                       new ReduceAction611,
+                       new ReduceAction612,
+                       new ReduceAction613,
+                       new ReduceAction614,
+                       new ReduceAction615,
+                       new ReduceAction616,
+                       new ReduceAction617,
+                       new ReduceAction618,
+                       new ReduceAction619,
+                       new ReduceAction620,
+                       new ReduceAction621,
+                       new ReduceAction622,
+                       new ReduceAction623,
+                       new ReduceAction624,
+                       new ReduceAction625,
+                       new ReduceAction626,
+                       new ReduceAction627,
+                       new ReduceAction628,
+                       new ReduceAction629,
+                       new ReduceAction630,
+                       new ReduceAction631,
+                       new ReduceAction632,
+                       new ReduceAction633,
+                       new ReduceAction634,
+                       new ReduceAction635,
+                       new ReduceAction636,
+                       new ReduceAction637,
+                       new ReduceAction638,
+                       new ReduceAction639,
+                       new ReduceAction640,
+                       new ReduceAction641,
+                       new ReduceAction642,
+                       new ReduceAction643,
+                       new ReduceAction644,
+                       new ReduceAction645,
+                       new ReduceAction646,
+                       new ReduceAction647,
+                       new ReduceAction648,
+                       new ReduceAction649,
+                       new ReduceAction650,
+                       new ReduceAction651,
+                       new ReduceAction652,
+                       new ReduceAction653,
+                       new ReduceAction654,
+                       new ReduceAction655,
+                       new ReduceAction656,
+                       new ReduceAction657,
+                       new ReduceAction658,
+                       new ReduceAction659,
+                       new ReduceAction660,
+                       new ReduceAction661,
+                       new ReduceAction662,
+                       new ReduceAction663,
+                       new ReduceAction664,
+                       new ReduceAction665,
+                       new ReduceAction666,
+                       new ReduceAction667,
+                       new ReduceAction668,
+                       new ReduceAction669,
+                       new ReduceAction670,
+                       new ReduceAction671,
+                       new ReduceAction672,
+                       new ReduceAction673,
+                       new ReduceAction674,
+                       new ReduceAction675,
+                       new ReduceAction676,
+                       new ReduceAction677,
+                       new ReduceAction678,
+                       new ReduceAction679,
+                       new ReduceAction680,
+                       new ReduceAction681,
+                       new ReduceAction682,
+                       new ReduceAction683,
+                       new ReduceAction684,
+                       new ReduceAction685,
+                       new ReduceAction686,
+                       new ReduceAction687,
+                       new ReduceAction688,
+                       new ReduceAction689,
+                       new ReduceAction690,
+                       new ReduceAction691,
+                       new ReduceAction692,
+                       new ReduceAction693,
+                       new ReduceAction694,
+                       new ReduceAction695,
+                       new ReduceAction696,
+                       new ReduceAction697,
+                       new ReduceAction698,
+                       new ReduceAction699,
+                       new ReduceAction700,
+                       new ReduceAction701,
+                       new ReduceAction702,
+                       new ReduceAction703,
+                       new ReduceAction704,
+                       new ReduceAction705,
+                       new ReduceAction706,
+                       new ReduceAction707,
+                       new ReduceAction708,
+                       new ReduceAction709,
+                       new ReduceAction710,
+                       new ReduceAction711,
+                       new ReduceAction712,
+                       new ReduceAction713,
+                       new ReduceAction714,
+                       new ReduceAction715,
+                       new ReduceAction716,
+                       new ReduceAction717,
+                       new ReduceAction718,
+                       new ReduceAction719,
+                       new ReduceAction720,
+                       new ReduceAction721,
+                       new ReduceAction722,
+                       new ReduceAction723
                )
        end
 end
@@ -4654,6 +4805,7 @@ 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
@@ -4662,34 +4814,24 @@ special ReduceAction
                                        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(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa PVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa PMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = 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)
@@ -4701,6 +4843,7 @@ 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
@@ -4710,36 +4853,26 @@ special ReduceAction
                                        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(
+                                       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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist8
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = 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)
@@ -4751,6 +4884,9 @@ 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
@@ -4758,28 +4894,24 @@ special ReduceAction
                                        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(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa PVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa PMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = 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)
@@ -4791,6 +4923,8 @@ 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
@@ -4800,36 +4934,26 @@ special ReduceAction
                                        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(
+                                       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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist8
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = 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)
@@ -4841,7 +4965,6 @@ 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
@@ -4851,38 +4974,21 @@ special ReduceAction
                                        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(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa PVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa PMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var ppropdefnode1 = 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)
@@ -4894,6 +5000,8 @@ 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
@@ -4902,30 +5010,23 @@ special ReduceAction
                                        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(
+                                       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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var ppropdefnode1 = 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)
@@ -4937,6 +5038,8 @@ 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
@@ -4944,28 +5047,21 @@ special ReduceAction
                                        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(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa PVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa PMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var ppropdefnode1 = 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)
@@ -4977,6 +5073,8 @@ 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
@@ -4985,30 +5083,23 @@ special ReduceAction
                                        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(
+                                       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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var ppropdefnode1 = 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)
@@ -5020,27 +5111,30 @@ 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 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(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa PVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa PMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwattrnode7,
-                                               tattridnode8,
-                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5053,6 +5147,86 @@ 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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var ppropdefnode1 = 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: 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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa TString
+                                       var ppropdefnode1 = 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: Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5062,6 +5236,45 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa TString
+                                       var ppropdefnode1 = 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: 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 tkwreadablenode5 = nodearraylist2
                                        assert tkwreadablenode5 isa TKwreadable
                                        var pablenode3 = new AReadAble.init_areadable(
@@ -5074,22 +5287,21 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var pvisibilitynode10 = nodearraylist4
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist5
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
+                                       var tattridnode13 = nodearraylist6
+                                       assert tattridnode13 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
+                                               null,
+                                               tattridnode13,
                                                null,
                                                null
                                        )
@@ -5098,12 +5310,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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5127,22 +5338,21 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist6
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
+                                               null,
+                                               tattridnode13,
                                                null,
                                                null
                                        )
@@ -5151,12 +5361,11 @@ 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 nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -5170,22 +5379,21 @@ special ReduceAction
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var pvisibilitynode8 = nodearraylist3
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist4
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
+                                               null,
+                                               tattridnode11,
                                                null,
                                                null
                                        )
@@ -5194,12 +5402,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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5223,22 +5430,21 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist6
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
+                                               null,
+                                               tattridnode13,
                                                null,
                                                null
                                        )
@@ -5247,12 +5453,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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5279,22 +5484,21 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist8
+                                       var tkwattrnode11 = nodearraylist7
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist9
-                                       assert tattridnode12 isa TAttrid
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
+                                               null,
+                                               tattridnode13,
                                                null,
                                                null
                                        )
@@ -5303,12 +5507,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 nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5325,22 +5528,21 @@ special ReduceAction
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
+                                               null,
+                                               tattridnode11,
                                                null,
                                                null
                                        )
@@ -5349,12 +5551,11 @@ 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 nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -5368,22 +5569,21 @@ special ReduceAction
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var pvisibilitynode8 = nodearraylist3
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist4
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
+                                               null,
+                                               tattridnode11,
                                                null,
                                                null
                                        )
@@ -5392,12 +5592,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 nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5414,22 +5613,21 @@ special ReduceAction
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
+                                               null,
+                                               tattridnode11,
                                                null,
                                                null
                                        )
@@ -5438,34 +5636,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 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
+                                       var pvisibilitynode6 = nodearraylist2
                                        assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist4
+                                       var tkwattrnode7 = nodearraylist3
                                        assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa TAttrid
+                                       var tattridnode9 = nodearraylist4
+                                       assert tattridnode9 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               tkwredefnode5,
+                                               null,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
+                                               null,
+                                               tattridnode9,
                                                null,
                                                null
                                        )
@@ -5474,7 +5670,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction108
+private class ReduceAction111
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5500,23 +5696,24 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist4
+                                       var tkwredefnode9 = nodearraylist4
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist5
+                                       var tkwattrnode11 = nodearraylist6
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist6
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist7
-                                       assert ptypenode13 isa PType
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5524,7 +5721,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction109
+private class ReduceAction112
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5553,23 +5750,24 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist7
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5577,7 +5775,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction110
+private class ReduceAction113
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5596,23 +5794,24 @@ special ReduceAction
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist6
-                                       assert ptypenode11 isa PType
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5620,7 +5819,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction111
+private class ReduceAction114
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5649,23 +5848,24 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist7
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5673,7 +5873,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction112
+private class ReduceAction115
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5705,23 +5905,24 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var tkwredefnode9 = nodearraylist6
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist7
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist8
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
+                                       var tattridnode13 = nodearraylist9
+                                       assert tattridnode13 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               null,
+                                               tkwredefnode9,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5729,7 +5930,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction113
+private class ReduceAction116
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5751,23 +5952,24 @@ special ReduceAction
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist6
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5775,7 +5977,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction114
+private class ReduceAction117
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5794,23 +5996,24 @@ special ReduceAction
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist6
-                                       assert ptypenode11 isa PType
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5818,7 +6021,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction115
+private class ReduceAction118
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5840,23 +6043,24 @@ special ReduceAction
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist6
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               null,
+                                               tkwredefnode7,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5864,7 +6068,7 @@ special ReduceAction
        end
 init do end
 end
-private class ReduceAction116
+private class ReduceAction119
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -5876,23 +6080,24 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa PDoc
-                                       var pvisibilitynode6 = nodearraylist2
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
                                        assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist3
+                                       var tkwattrnode7 = nodearraylist4
                                        assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa TAttrid
-                                       var ptypenode9 = nodearraylist5
-                                       assert ptypenode9 isa PType
+                                       var tattridnode9 = nodearraylist5
+                                       assert tattridnode9 isa TAttrid
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               null,
+                                               tkwredefnode5,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
-                                               ptypenode9,
+                                               null,
+                                               tattridnode9,
+                                               null,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5900,12 +6105,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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5927,25 +6131,24 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var pvisibilitynode10 = nodearraylist4
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist5
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist8
-                                       assert ptypenode13 isa PType
+                                       var tattridnode13 = nodearraylist6
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist7
+                                       assert ptypenode14 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -5953,12 +6156,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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5983,25 +6185,24 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist6
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6009,12 +6210,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 nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6029,25 +6229,24 @@ special ReduceAction
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var pvisibilitynode8 = nodearraylist3
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist4
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist6
+                                       assert ptypenode12 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6055,12 +6254,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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6085,25 +6283,24 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist6
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist9
-                                       assert ptypenode13 isa PType
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6111,12 +6308,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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6144,25 +6340,24 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist8
+                                       var tkwattrnode11 = nodearraylist7
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist9
-                                       assert tattridnode12 isa TAttrid
-                                       var ptypenode13 = nodearraylist10
-                                       assert ptypenode13 isa PType
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
-                                               tkwredefnode9,
+                                               null,
                                                pvisibilitynode10,
                                                tkwattrnode11,
-                                               tattridnode12,
-                                               ptypenode13,
+                                               null,
+                                               tattridnode13,
+                                               ptypenode14,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6170,12 +6365,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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6193,25 +6387,24 @@ special ReduceAction
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist8
-                                       assert ptypenode11 isa PType
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6219,12 +6412,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 nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6239,25 +6431,24 @@ special ReduceAction
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var pvisibilitynode8 = nodearraylist3
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist4
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist7
-                                       assert ptypenode11 isa PType
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist6
+                                       assert ptypenode12 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6265,12 +6456,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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6288,25 +6478,24 @@ special ReduceAction
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var ptypenode11 = nodearraylist8
-                                       assert ptypenode11 isa PType
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
-                                               tkwredefnode7,
+                                               null,
                                                pvisibilitynode8,
                                                tkwattrnode9,
-                                               tattridnode10,
-                                               ptypenode11,
+                                               null,
+                                               tattridnode11,
+                                               ptypenode12,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6314,12 +6503,11 @@ 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 nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -6327,25 +6515,24 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
+                                       var pvisibilitynode6 = nodearraylist2
                                        assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist4
+                                       var tkwattrnode7 = nodearraylist3
                                        assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa TAttrid
-                                       var ptypenode9 = nodearraylist6
-                                       assert ptypenode9 isa PType
+                                       var tattridnode9 = nodearraylist4
+                                       assert tattridnode9 isa TAttrid
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa PType
                                        var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
-                                               tkwredefnode5,
+                                               null,
                                                pvisibilitynode6,
                                                tkwattrnode7,
-                                               tattridnode8,
-                                               ptypenode9,
+                                               null,
+                                               tattridnode9,
+                                               ptypenode10,
                                                null
                                        )
                                        node_list = ppropdefnode1
@@ -6353,12 +6540,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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6381,36 +6567,38 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist4
+                                       var tkwredefnode9 = nodearraylist4
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist5
+                                       var tkwattrnode11 = nodearraylist6
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist6
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist9
-                                       assert pexprnode14 isa PExpr
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
                                        var ppropdefnode1 = 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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6436,36 +6624,38 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist7
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist10
-                                       assert pexprnode14 isa PExpr
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
                                        var ppropdefnode1 = 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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6481,36 +6671,38 @@ special ReduceAction
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
                                        var ppropdefnode1 = 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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6536,36 +6728,38 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist7
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist10
-                                       assert pexprnode14 isa PExpr
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
                                        var ppropdefnode1 = 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 nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -6594,36 +6788,38 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var tkwredefnode9 = nodearraylist6
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist7
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist8
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
+                                       var tattridnode13 = nodearraylist9
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist10
+                                       assert ptypenode14 isa PType
                                        var ppropdefnode1 = 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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6642,36 +6838,38 @@ special ReduceAction
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist6
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist8
+                                       assert ptypenode12 isa PType
                                        var ppropdefnode1 = 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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6687,36 +6885,38 @@ special ReduceAction
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist5
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa PExpr
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
                                        var ppropdefnode1 = 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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6735,36 +6935,38 @@ special ReduceAction
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist6
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist8
+                                       assert ptypenode12 isa PType
                                        var ppropdefnode1 = 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 nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6773,36 +6975,38 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa PDoc
-                                       var pvisibilitynode6 = nodearraylist2
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
                                        assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist3
+                                       var tkwattrnode7 = nodearraylist4
                                        assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa TAttrid
-                                       var pexprnode10 = nodearraylist7
-                                       assert pexprnode10 isa PExpr
+                                       var tattridnode9 = nodearraylist5
+                                       assert tattridnode9 isa TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa PType
                                        var ppropdefnode1 = 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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6826,38 +7030,36 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var pvisibilitynode10 = nodearraylist4
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist5
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist7
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist10
-                                       assert pexprnode14 isa PExpr
+                                       var tattridnode13 = nodearraylist6
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist9
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -6884,38 +7086,36 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist6
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist10
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6932,38 +7132,36 @@ special ReduceAction
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var pvisibilitynode8 = nodearraylist3
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist4
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -6990,38 +7188,36 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist6
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist8
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist11
-                                       assert pexprnode14 isa PExpr
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist10
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7051,38 +7247,36 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist8
+                                       var tkwattrnode11 = nodearraylist7
                                        assert tkwattrnode11 isa TKwattr
-                                       var tattridnode12 = nodearraylist9
-                                       assert tattridnode12 isa TAttrid
-                                       var pexprnode14 = nodearraylist12
-                                       assert pexprnode14 isa PExpr
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7102,38 +7296,36 @@ special ReduceAction
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7150,38 +7342,36 @@ special ReduceAction
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var pvisibilitynode8 = nodearraylist3
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist4
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist6
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa PExpr
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7201,38 +7391,36 @@ special ReduceAction
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
+                                       var tkwattrnode9 = nodearraylist5
                                        assert tkwattrnode9 isa TKwattr
-                                       var tattridnode10 = nodearraylist7
-                                       assert tattridnode10 isa TAttrid
-                                       var pexprnode12 = nodearraylist10
-                                       assert pexprnode12 isa PExpr
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7242,33 +7430,32 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
+                                       var pvisibilitynode6 = nodearraylist2
                                        assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist4
+                                       var tkwattrnode7 = nodearraylist3
                                        assert tkwattrnode7 isa TKwattr
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa TAttrid
-                                       var pexprnode10 = nodearraylist8
-                                       assert pexprnode10 isa PExpr
+                                       var tattridnode9 = nodearraylist4
+                                       assert tattridnode9 isa TAttrid
+                                       var pexprnode11 = nodearraylist7
+                                       assert pexprnode11 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7297,33 +7484,34 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist4
+                                       var tkwredefnode9 = nodearraylist4
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist5
+                                       var tkwattrnode11 = nodearraylist6
                                        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 tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist10
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7355,33 +7543,34 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist7
                                        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 tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7403,33 +7592,34 @@ special ReduceAction
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
+                                       var tkwattrnode9 = nodearraylist5
                                        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 tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7461,33 +7651,34 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist7
                                        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 tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7522,33 +7713,34 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var tkwredefnode9 = nodearraylist6
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist7
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist8
                                        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 tattridnode13 = nodearraylist9
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist12
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7573,33 +7765,34 @@ special ReduceAction
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist6
                                        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 tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7621,33 +7814,34 @@ special ReduceAction
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist3
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist4
+                                       var tkwattrnode9 = nodearraylist5
                                        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 tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7672,33 +7866,34 @@ special ReduceAction
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist6
                                        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 tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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
@@ -7713,38 +7908,38 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa PDoc
-                                       var pvisibilitynode6 = nodearraylist2
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
                                        assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist3
+                                       var tkwattrnode7 = nodearraylist4
                                        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 tattridnode9 = nodearraylist5
+                                       assert tattridnode9 isa TAttrid
+                                       var pexprnode11 = nodearraylist8
+                                       assert pexprnode11 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7769,40 +7964,38 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist5
+                                       var pvisibilitynode10 = nodearraylist4
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist6
+                                       var tkwattrnode11 = nodearraylist5
                                        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 tattridnode13 = nodearraylist6
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist7
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist10
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7830,40 +8023,38 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist6
                                        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 tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7881,40 +8072,38 @@ special ReduceAction
                                                null,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var pvisibilitynode8 = nodearraylist3
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist4
                                        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 tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist6
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7942,40 +8131,38 @@ special ReduceAction
                                                null,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist6
+                                       var pvisibilitynode10 = nodearraylist5
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist7
+                                       var tkwattrnode11 = nodearraylist6
                                        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 tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -8006,40 +8193,38 @@ special ReduceAction
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
-                                       var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
-                                       var pvisibilitynode10 = nodearraylist7
+                                       var pvisibilitynode10 = nodearraylist6
                                        assert pvisibilitynode10 isa PVisibility
-                                       var tkwattrnode11 = nodearraylist8
+                                       var tkwattrnode11 = nodearraylist7
                                        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 tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist12
+                                       assert pexprnode15 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8060,40 +8245,38 @@ special ReduceAction
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
+                                       var tkwattrnode9 = nodearraylist5
                                        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 tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -8111,40 +8294,38 @@ special ReduceAction
                                                null,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist4
+                                       var pvisibilitynode8 = nodearraylist3
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist5
+                                       var tkwattrnode9 = nodearraylist4
                                        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 tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist6
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8165,40 +8346,38 @@ special ReduceAction
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
-                                       var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
-                                       var pvisibilitynode8 = nodearraylist5
+                                       var pvisibilitynode8 = nodearraylist4
                                        assert pvisibilitynode8 isa PVisibility
-                                       var tkwattrnode9 = nodearraylist6
+                                       var tkwattrnode9 = nodearraylist5
                                        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 tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
                                        var ppropdefnode1 = 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 nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8209,39 +8388,42 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa PDoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
+                                       var pvisibilitynode6 = nodearraylist2
                                        assert pvisibilitynode6 isa PVisibility
-                                       var tkwattrnode7 = nodearraylist4
+                                       var tkwattrnode7 = nodearraylist3
                                        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 tattridnode9 = nodearraylist4
+                                       assert tattridnode9 isa TAttrid
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa PType
+                                       var pexprnode11 = nodearraylist8
+                                       assert pexprnode11 isa PExpr
                                        var ppropdefnode1 = 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 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
@@ -8251,32 +8433,56 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       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 tkwredefnode9 = nodearraylist4
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist5
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwattrnode11 = nodearraylist6
+                                       assert tkwattrnode11 isa TKwattr
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = 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 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
@@ -8287,34 +8493,57 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                       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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwattrnode11 = nodearraylist7
+                                       assert tkwattrnode11 isa TKwattr
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist12
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               tkwattrnode11,
+                                               null,
+                                               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 nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8324,32 +8553,50 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = 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 tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = 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 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
@@ -8360,34 +8607,60 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwattrnode11 = nodearraylist7
+                                       assert tkwattrnode11 isa TKwattr
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist12
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               tkwattrnode11,
+                                               null,
+                                               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 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
@@ -8397,33 +8670,59 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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 tkwredefnode9 = nodearraylist6
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist7
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwattrnode11 = nodearraylist8
+                                       assert tkwattrnode11 isa TKwattr
+                                       var tattridnode13 = nodearraylist9
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist10
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist13
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               tkwattrnode11,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
+                                               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 nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8434,35 +8733,50 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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 pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwattrnode9 = nodearraylist6
+                                       assert tkwattrnode9 isa TKwattr
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist8
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist11
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null
+                                               pablenode3,
+                                               null,
+                                               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 nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8473,35 +8787,48 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = 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 tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8
+                                               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 nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -8513,37 +8840,49 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var tkwwritablenode6 = nodearraylist3
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = 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 tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist8
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist11
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8
+                                               null,
+                                               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 nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8554,38 +8893,40 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwattrnode7 = nodearraylist4
+                                       assert tkwattrnode7 isa TKwattr
+                                       var tattridnode9 = nodearraylist5
+                                       assert tattridnode9 isa TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa PType
+                                       var pexprnode11 = nodearraylist9
+                                       assert pexprnode11 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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 nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8594,39 +8935,46 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist9
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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 tkwvarnode12 = nodearraylist5
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist6
+                                       assert tattridnode13 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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 nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8636,40 +8984,48 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       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 tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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 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
@@ -8677,33 +9033,36 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist9
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
+                                       )
+                                       var pvisibilitynode8 = nodearraylist3
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist4
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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
@@ -8717,29 +9076,44 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       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 tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
+                                               pvisibilitynode10,
                                                null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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
@@ -8754,77 +9128,50 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               null,
-                                               psignaturenode7,
-                                               pexprnode8
-                                       )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(12), node_list)
-       end
-init do end
-end
-private class ReduceAction176
-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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       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 tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction177
+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 nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8833,40 +9180,42 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist9
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       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 tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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 ReduceAction178
+private class ReduceAction180
 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
@@ -8874,36 +9223,40 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
+                                       )
+                                       var pvisibilitynode8 = nodearraylist3
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist4
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
+                                               pablenode4,
                                                null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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 ReduceAction181
 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
@@ -8912,78 +9265,76 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       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 tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
                                                null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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 ReduceAction180
+private class ReduceAction182
 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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwvarnode8 = nodearraylist3
+                                       assert tkwvarnode8 isa TKwvar
+                                       var tattridnode9 = nodearraylist4
+                                       assert tattridnode9 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               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 ReduceAction181
+private class ReduceAction183
 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
@@ -8993,37 +9344,51 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist9
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       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 tkwredefnode9 = nodearraylist4
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist5
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               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 ReduceAction184
 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
@@ -9031,28 +9396,46 @@ special ReduceAction
                                        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(
+                                       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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction183
+private class ReduceAction185
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -9065,48 +9448,98 @@ special ReduceAction
                                        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(
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
+                                       )
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
+                                               pablenode3,
+                                               null,
+                                               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 ReduceAction184
+private class ReduceAction186
 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 ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
+                                       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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               null
+                                       )
                                        node_list = ppropdefnode1
-                                       p.push(p.go_to(13), node_list)
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
-private class ReduceAction185
+private class ReduceAction187
 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
@@ -9116,34 +9549,52 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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 tkwredefnode9 = nodearraylist6
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist7
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist8
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist9
+                                       assert tattridnode13 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
                                                null
                                        )
                                        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 ReduceAction186
+private class ReduceAction188
 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
@@ -9153,37 +9604,44 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       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 pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist6
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode3,
+                                               null,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
                                                null
                                        )
                                        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 ReduceAction187
+private class ReduceAction189
 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
@@ -9192,37 +9650,42 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
+                                       )
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        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 ReduceAction188
+private class ReduceAction190
 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
@@ -9232,40 +9695,44 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var tkwwritablenode6 = nodearraylist3
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               tkwredefnode5,
+                                               tkwwritablenode6
+                                       )
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist6
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               null
                                        )
                                        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 ReduceAction189
+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 nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -9273,37 +9740,36 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwvarnode8 = nodearraylist4
+                                       assert tkwvarnode8 isa TKwvar
+                                       var tattridnode9 = nodearraylist5
+                                       assert tattridnode9 isa TAttrid
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               null,
+                                               null
                                        )
                                        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 ReduceAction190
+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 nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9313,58 +9779,40 @@ special ReduceAction
                                        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 psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var pexprnode8 = nodearraylist9
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(14), node_list)
-       end
-init do end
-end
-private class ReduceAction191
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var pvisibilitynode1 = new APublicVisibility.init_apublicvisibility(
+                                       var tkwwritablenode8 = nodearraylist3
+                                       assert tkwwritablenode8 isa TKwwritable
+                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode8
                                        )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(15), node_list)
-       end
-init do end
-end
-private class ReduceAction192
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwprivatenode2 = nodearraylist1
-                                       assert tkwprivatenode2 isa TKwprivate
-                                       var pvisibilitynode1 = new APrivateVisibility.init_aprivatevisibility(
-                                               tkwprivatenode2
+                                       var pvisibilitynode10 = nodearraylist4
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist5
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist6
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist7
+                                       assert ptypenode14 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
                                        )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(15), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
@@ -9373,15 +9821,52 @@ 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 tkwprotectednode2 = nodearraylist1
-                                       assert tkwprotectednode2 isa TKwprotected
-                                       var pvisibilitynode1 = new AProtectedVisibility.init_aprotectedvisibility(
-                                               tkwprotectednode2
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(15), node_list)
+                                       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 tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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
@@ -9390,15 +9875,42 @@ 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 tkwintrudenode2 = nodearraylist1
-                                       assert tkwintrudenode2 isa TKwintrude
-                                       var pvisibilitynode1 = new AIntrudeVisibility.init_aintrudevisibility(
-                                               tkwintrudenode2
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa PDoc
+                                       var tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
                                        )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(15), node_list)
+                                       var pvisibilitynode8 = nodearraylist3
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist4
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist6
+                                       assert ptypenode12 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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
@@ -9407,14 +9919,52 @@ 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 tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var pmethidnode1 = new AIdMethid.init_aidmethid(
-                                               tidnode2
+                                       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
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       var tkwwritablenode8 = nodearraylist4
+                                       assert tkwwritablenode8 isa TKwwritable
+                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode8
+                                       )
+                                       var pvisibilitynode10 = nodearraylist5
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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
@@ -9423,14 +9973,55 @@ 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 tplusnode2 = nodearraylist1
-                                       assert tplusnode2 isa TPlus
-                                       var pmethidnode1 = new APlusMethid.init_aplusmethid(
-                                               tplusnode2
+                                       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
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       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 tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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
@@ -9439,14 +10030,45 @@ 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 tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
-                                       var pmethidnode1 = new AMinusMethid.init_aminusmethid(
-                                               tminusnode2
+                                       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
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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
@@ -9455,14 +10077,42 @@ 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 tstarnode2 = nodearraylist1
-                                       assert tstarnode2 isa TStar
-                                       var pmethidnode1 = new AStarMethid.init_astarmethid(
-                                               tstarnode2
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa PDoc
+                                       var tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       var pvisibilitynode8 = nodearraylist3
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist4
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist6
+                                       assert ptypenode12 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
@@ -9471,14 +10121,45 @@ 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 tslashnode2 = nodearraylist1
-                                       assert tslashnode2 isa TSlash
-                                       var pmethidnode1 = new ASlashMethid.init_aslashmethid(
-                                               tslashnode2
+                                       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
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
@@ -9487,14 +10168,35 @@ 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 tpercentnode2 = nodearraylist1
-                                       assert tpercentnode2 isa TPercent
-                                       var pmethidnode1 = new APercentMethid.init_apercentmethid(
-                                               tpercentnode2
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa PDoc
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwvarnode8 = nodearraylist3
+                                       assert tkwvarnode8 isa TKwvar
+                                       var tattridnode9 = nodearraylist4
+                                       assert tattridnode9 isa TAttrid
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               ptypenode10,
+                                               null
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
        end
 init do end
 end
@@ -9503,426 +10205,5681 @@ 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 teqnode2 = nodearraylist1
-                                       assert teqnode2 isa TEq
-                                       var pmethidnode1 = new AEqMethid.init_aeqmethid(
-                                               teqnode2
+                                       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 tkwredefnode9 = nodearraylist4
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist5
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction202
+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 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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction203
+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 tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
+                                       )
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               null,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction204
+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 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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction205
+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 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 tkwredefnode9 = nodearraylist6
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist7
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist8
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist9
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist10
+                                       assert ptypenode14 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction206
+special ReduceAction
+       redef 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 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 pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist6
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist8
+                                       assert ptypenode12 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               null,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction207
+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 tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
+                                       )
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction208
+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 tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var tkwwritablenode6 = nodearraylist3
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               tkwredefnode5,
+                                               tkwwritablenode6
+                                       )
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist6
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist8
+                                       assert ptypenode12 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode7,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction209
+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 tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwvarnode8 = nodearraylist4
+                                       assert tkwvarnode8 isa TKwvar
+                                       var tattridnode9 = nodearraylist5
+                                       assert tattridnode9 isa TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa PType
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               ptypenode10,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction210
+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 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 tkwvarnode12 = nodearraylist5
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist6
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist9
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = 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 ReduceAction211
+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 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 tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist10
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = 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 ReduceAction212
+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 tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
+                                       )
+                                       var pvisibilitynode8 = nodearraylist3
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist4
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction213
+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 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 tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist10
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = 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 ReduceAction214
+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 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 tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = 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 ReduceAction215
+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 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 tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction216
+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 tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
+                                       )
+                                       var pvisibilitynode8 = nodearraylist3
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist4
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction217
+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 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 tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               null,
+                                               pexprnode13
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction218
+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 pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwvarnode8 = nodearraylist3
+                                       assert tkwvarnode8 isa TKwvar
+                                       var tattridnode9 = nodearraylist4
+                                       assert tattridnode9 isa TAttrid
+                                       var pexprnode11 = nodearraylist7
+                                       assert pexprnode11 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               null,
+                                               pexprnode11
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction219
+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 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 tkwredefnode9 = nodearraylist4
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist5
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist10
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction220
+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 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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction221
+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 tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
+                                       )
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction222
+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 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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction223
+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 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 tkwredefnode9 = nodearraylist6
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist7
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist8
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist9
+                                       assert tattridnode13 isa TAttrid
+                                       var pexprnode15 = nodearraylist12
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               null,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction224
+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 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 pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist6
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction225
+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 tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
+                                       )
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction226
+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 tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var tkwwritablenode6 = nodearraylist3
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               tkwredefnode5,
+                                               tkwwritablenode6
+                                       )
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist6
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction227
+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 tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwvarnode8 = nodearraylist4
+                                       assert tkwvarnode8 isa TKwvar
+                                       var tattridnode9 = nodearraylist5
+                                       assert tattridnode9 isa TAttrid
+                                       var pexprnode11 = nodearraylist8
+                                       assert pexprnode11 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction228
+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 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 tkwvarnode12 = nodearraylist5
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist6
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist7
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist10
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction229
+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 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 tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction230
+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 tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
+                                       )
+                                       var pvisibilitynode8 = nodearraylist3
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist4
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist6
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               null,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction231
+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 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 tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction232
+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 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 tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist12
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               null,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction233
+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 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 tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               null,
+                                               null,
+                                               pvisibilitynode8,
+                                               null,
+                                               tkwvarnode10,
+                                               tattridnode11,
+                                               ptypenode12,
+                                               pexprnode13
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction234
+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 tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
+                                       )
+                                       var pvisibilitynode8 = nodearraylist3
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist4
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist5
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist6
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               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 ReduceAction235
+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 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 tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               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 ReduceAction236
+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 pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwvarnode8 = nodearraylist3
+                                       assert tkwvarnode8 isa TKwvar
+                                       var tattridnode9 = nodearraylist4
+                                       assert tattridnode9 isa TAttrid
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa PType
+                                       var pexprnode11 = nodearraylist8
+                                       assert pexprnode11 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               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 ReduceAction237
+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 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 tkwredefnode9 = nodearraylist4
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist5
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist6
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist7
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist8
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist11
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction238
+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 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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist12
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       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 tkwreadablenode5 = nodearraylist2
+                                       assert tkwreadablenode5 isa TKwreadable
+                                       var pablenode3 = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode5
+                                       )
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction240
+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 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 tkwredefnode9 = nodearraylist5
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist6
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist7
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist8
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist9
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist12
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction241
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa 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 tkwredefnode9 = nodearraylist6
+                                       assert tkwredefnode9 isa TKwredef
+                                       var pvisibilitynode10 = nodearraylist7
+                                       assert pvisibilitynode10 isa PVisibility
+                                       var tkwvarnode12 = nodearraylist8
+                                       assert tkwvarnode12 isa TKwvar
+                                       var tattridnode13 = nodearraylist9
+                                       assert tattridnode13 isa TAttrid
+                                       var ptypenode14 = nodearraylist10
+                                       assert ptypenode14 isa PType
+                                       var pexprnode15 = nodearraylist13
+                                       assert pexprnode15 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               pablenode3,
+                                               pablenode6,
+                                               tkwredefnode9,
+                                               pvisibilitynode10,
+                                               null,
+                                               tkwvarnode12,
+                                               tattridnode13,
+                                               ptypenode14,
+                                               pexprnode15
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(12), node_list)
+       end
+init do end
+end
+private class ReduceAction242
+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 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 pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist6
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist8
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist11
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               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 ReduceAction243
+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 tkwwritablenode6 = nodearraylist2
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               null,
+                                               tkwwritablenode6
+                                       )
+                                       var tkwredefnode7 = nodearraylist3
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist4
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist5
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist6
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist7
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               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 ReduceAction244
+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 tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var tkwwritablenode6 = nodearraylist3
+                                       assert tkwwritablenode6 isa TKwwritable
+                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                               tkwredefnode5,
+                                               tkwwritablenode6
+                                       )
+                                       var tkwredefnode7 = nodearraylist4
+                                       assert tkwredefnode7 isa TKwredef
+                                       var pvisibilitynode8 = nodearraylist5
+                                       assert pvisibilitynode8 isa PVisibility
+                                       var tkwvarnode10 = nodearraylist6
+                                       assert tkwvarnode10 isa TKwvar
+                                       var tattridnode11 = nodearraylist7
+                                       assert tattridnode11 isa TAttrid
+                                       var ptypenode12 = nodearraylist8
+                                       assert ptypenode12 isa PType
+                                       var pexprnode13 = nodearraylist11
+                                       assert pexprnode13 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               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 ReduceAction245
+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 tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa PVisibility
+                                       var tkwvarnode8 = nodearraylist4
+                                       assert tkwvarnode8 isa TKwvar
+                                       var tattridnode9 = nodearraylist5
+                                       assert tattridnode9 isa TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa PType
+                                       var pexprnode11 = nodearraylist9
+                                       assert pexprnode11 isa PExpr
+                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               null,
+                                               tkwvarnode8,
+                                               tattridnode9,
+                                               ptypenode10,
+                                               pexprnode11
+                                       )
+                                       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 nodearraylist6 = p.pop
+                                       var nodearraylist5 = 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 psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               pexprnode8
+                                       )
+                                       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 nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = 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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               pexprnode8
+                                       )
+                                       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 nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = 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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
+                                       )
+                                       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 nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = 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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist8
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
+                                       )
+                                       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 nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = 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 psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist6
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               pexprnode8
+                                       )
+                                       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 nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = 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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               pexprnode8
+                                       )
+                                       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 nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = 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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
+                                       )
+                                       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 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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist8
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
+                                       )
+                                       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 nodearraylist5 = 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 ReduceAction255
+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 ReduceAction256
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var pvisibilitynode1 = new APublicVisibility.init_apublicvisibility(
+                                       )
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(13), node_list)
+       end
+init do end
+end
+private class ReduceAction257
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwprivatenode2 = nodearraylist1
+                                       assert tkwprivatenode2 isa TKwprivate
+                                       var pvisibilitynode1 = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode2
+                                       )
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(13), node_list)
+       end
+init do end
+end
+private class ReduceAction258
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwprotectednode2 = nodearraylist1
+                                       assert tkwprotectednode2 isa TKwprotected
+                                       var pvisibilitynode1 = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode2
+                                       )
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(13), node_list)
+       end
+init do end
+end
+private class ReduceAction259
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwintrudenode2 = nodearraylist1
+                                       assert tkwintrudenode2 isa TKwintrude
+                                       var pvisibilitynode1 = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode2
+                                       )
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(13), node_list)
+       end
+init do end
+end
+private class ReduceAction260
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa TId
+                                       var pmethidnode1 = new AIdMethid.init_aidmethid(
+                                               tidnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction261
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tplusnode2 = nodearraylist1
+                                       assert tplusnode2 isa TPlus
+                                       var pmethidnode1 = new APlusMethid.init_aplusmethid(
+                                               tplusnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction262
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa TMinus
+                                       var pmethidnode1 = new AMinusMethid.init_aminusmethid(
+                                               tminusnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction263
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstarnode2 = nodearraylist1
+                                       assert tstarnode2 isa TStar
+                                       var pmethidnode1 = new AStarMethid.init_astarmethid(
+                                               tstarnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction264
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tslashnode2 = nodearraylist1
+                                       assert tslashnode2 isa TSlash
+                                       var pmethidnode1 = new ASlashMethid.init_aslashmethid(
+                                               tslashnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction265
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tpercentnode2 = nodearraylist1
+                                       assert tpercentnode2 isa TPercent
+                                       var pmethidnode1 = new APercentMethid.init_apercentmethid(
+                                               tpercentnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction266
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var teqnode2 = nodearraylist1
+                                       assert teqnode2 isa TEq
+                                       var pmethidnode1 = new AEqMethid.init_aeqmethid(
+                                               teqnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction267
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tnenode2 = nodearraylist1
+                                       assert tnenode2 isa TNe
+                                       var pmethidnode1 = new ANeMethid.init_anemethid(
+                                               tnenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction268
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tlenode2 = nodearraylist1
+                                       assert tlenode2 isa TLe
+                                       var pmethidnode1 = new ALeMethid.init_alemethid(
+                                               tlenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction269
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tgenode2 = nodearraylist1
+                                       assert tgenode2 isa TGe
+                                       var pmethidnode1 = new AGeMethid.init_agemethid(
+                                               tgenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction270
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tltnode2 = nodearraylist1
+                                       assert tltnode2 isa TLt
+                                       var pmethidnode1 = new ALtMethid.init_altmethid(
+                                               tltnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction271
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tgtnode2 = nodearraylist1
+                                       assert tgtnode2 isa TGt
+                                       var pmethidnode1 = new AGtMethid.init_agtmethid(
+                                               tgtnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction272
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa TObra
+                                       var tcbranode3 = nodearraylist2
+                                       assert tcbranode3 isa TCbra
+                                       var pmethidnode1 = new ABraMethid.init_abramethid(
+                                               tobranode2,
+                                               tcbranode3
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction273
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstarshipnode2 = nodearraylist1
+                                       assert tstarshipnode2 isa TStarship
+                                       var pmethidnode1 = new AStarshipMethid.init_astarshipmethid(
+                                               tstarshipnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction274
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa TId
+                                       var tassignnode3 = nodearraylist2
+                                       assert tassignnode3 isa TAssign
+                                       var pmethidnode1 = new AAssignMethid.init_aassignmethid(
+                                               tidnode2,
+                                               tassignnode3
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction275
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa TObra
+                                       var tcbranode3 = nodearraylist2
+                                       assert tcbranode3 isa TCbra
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa TAssign
+                                       var pmethidnode1 = new ABraassignMethid.init_abraassignmethid(
+                                               tobranode2,
+                                               tcbranode3,
+                                               tassignnode4
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(14), node_list)
+       end
+init do end
+end
+private class ReduceAction276
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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 = 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: 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 = 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: 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 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 = 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: 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 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 = 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 nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var listnode4 = new Array[Object]
+                                       var psignaturenode1 = new ASignature.init_asignature(
+                                               listnode2,
+                                               null,
+                                               listnode4
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(15), node_list)
+       end
+init do end
+end
+private class ReduceAction281
+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 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 = 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: 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 PType
+                                       var psignaturenode1 = 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: 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 PType
+                                       var psignaturenode1 = 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: Object = null
+                                       var listnode2 = new Array[Object]
+                                       var listnode4 = new Array[Object]
+                                       var psignaturenode1 = 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 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 = new ASignature.init_asignature(
+                                               listnode3,
+                                               null,
+                                               listnode5
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(16), node_list)
+       end
+init do end
+end
+private class ReduceAction286
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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(
+                                               listnode2,
+                                               ptypenode3,
+                                               listnode4
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(16), node_list)
+       end
+init do end
+end
+private class ReduceAction287
+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 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 PType
+                                       var psignaturenode1 = new ASignature.init_asignature(
+                                               listnode3,
+                                               ptypenode4,
+                                               listnode5
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(16), node_list)
+       end
+init do end
+end
+private class ReduceAction288
+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 listnode2 = new Array[Object]
+                                       var pparamnode1 = nodearraylist3
+                                       assert pparamnode1 isa PParam
+                                       if pparamnode1 != null then
+                                               listnode2.add(pparamnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(17), node_list)
+       end
+init do end
+end
+private class ReduceAction289
+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 listnode3 = new Array[Object]
+                                       var pparamnode1 = nodearraylist3
+                                       assert pparamnode1 isa PParam
+                                       var listnode2 = nodearraylist4 
+                                       assert listnode2 isa Array[Object]
+                                       if pparamnode1 != null then
+                                               listnode3.add(pparamnode1)
+                                       end
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(17), node_list)
+       end
+init do end
+end
+private class ReduceAction290
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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(17), node_list)
+       end
+init do end
+end
+private class ReduceAction291
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pparamnode1 = nodearraylist3
+                                       assert pparamnode1 isa PParam
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(18), node_list)
+       end
+init do end
+end
+private class ReduceAction292
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa TId
+                                       var pparamnode1 = new AParam.init_aparam(
+                                               tidnode2,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(19), node_list)
+       end
+init do end
+end
+private class ReduceAction293
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa TId
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa PType
+                                       var pparamnode1 = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               null
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(19), node_list)
+       end
+init do end
+end
+private class ReduceAction294
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa TId
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa PType
+                                       var tdotdotdotnode4 = nodearraylist3
+                                       assert tdotdotdotnode4 isa TDotdotdot
+                                       var pparamnode1 = 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: 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 ReduceAction296
+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 tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var tidnode4 = nodearraylist3
+                                       assert tidnode4 isa TId
+                                       var psignaturenode5 = nodearraylist4
+                                       assert psignaturenode5 isa PSignature
+                                       var pclosuredeclnode1 = 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 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 TKwwith
+                                       var tkwbreaknode3 = nodearraylist2
+                                       assert tkwbreaknode3 isa TKwbreak
+                                       var tidnode4 = nodearraylist4
+                                       assert tidnode4 isa TId
+                                       var psignaturenode5 = nodearraylist5
+                                       assert psignaturenode5 isa PSignature
+                                       var pclosuredeclnode1 = 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: 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 TKwwith
+                                       var tidnode4 = nodearraylist3
+                                       assert tidnode4 isa TId
+                                       var psignaturenode5 = nodearraylist4
+                                       assert psignaturenode5 isa PSignature
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa PExpr
+                                       var pclosuredeclnode1 = new AClosureDecl.init_aclosuredecl(
+                                               tkwwithnode2,
+                                               null,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pclosuredeclnode1
+                                       p.push(p.go_to(21), node_list)
+       end
+init do end
+end
+private class ReduceAction299
+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 tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var tkwbreaknode3 = nodearraylist2
+                                       assert tkwbreaknode3 isa TKwbreak
+                                       var tidnode4 = nodearraylist4
+                                       assert tidnode4 isa TId
+                                       var psignaturenode5 = nodearraylist5
+                                       assert psignaturenode5 isa PSignature
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa PExpr
+                                       var pclosuredeclnode1 = new AClosureDecl.init_aclosuredecl(
+                                               tkwwithnode2,
+                                               tkwbreaknode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pclosuredeclnode1
+                                       p.push(p.go_to(21), node_list)
+       end
+init do end
+end
+private class ReduceAction300
+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(22), node_list)
+       end
+init do end
+end
+private class ReduceAction301
+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(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 nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var ptypenode1 = nodearraylist1
+                                       assert ptypenode1 isa PType
+                                       if ptypenode1 != null then
+                                               listnode2.add(ptypenode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(23), node_list)
+       end
+init do end
+end
+private class ReduceAction303
+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 ptypenode1 = nodearraylist1
+                                       assert ptypenode1 isa PType
+                                       var listnode2 = nodearraylist2 
+                                       assert listnode2 isa Array[Object]
+                                       if ptypenode1 != null then
+                                               listnode3.add(ptypenode1)
+                                       end
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(23), node_list)
+       end
+init do end
+end
+private class ReduceAction304
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode1 = nodearraylist3
+                                       assert ptypenode1 isa PType
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(24), node_list)
+       end
+init do end
+end
+private class ReduceAction305
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode1 = nodearraylist3
+                                       assert ptypenode1 isa PType
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(25), node_list)
+       end
+init do end
+end
+private class ReduceAction306
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
+       end
+init do end
+end
+private class ReduceAction307
+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 listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist2
+                                       assert pexprnode2 isa PExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
+       end
+init do end
+end
+private class ReduceAction308
+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 listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist2
+                                       assert pexprnode2 isa PExpr
+                                       var listnode3 = nodearraylist3 
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
+       end
+init do end
+end
+private class ReduceAction309
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
+       end
+init do end
+end
+private class ReduceAction310
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(26), node_list)
+       end
+init do end
+end
+private class ReduceAction311
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist2
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(27), node_list)
+       end
+init do end
+end
+private class ReduceAction312
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction313
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction314
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa TKwreturn
+                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction315
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa TKwreturn
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction316
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa TKwbreak
+                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction317
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa TKwbreak
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction318
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwabortnode2 = nodearraylist1
+                                       assert tkwabortnode2 isa TKwabort
+                                       var pexprnode1 = new AAbortExpr.init_aabortexpr(
+                                               tkwabortnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction319
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction320
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction321
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction322
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction323
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction324
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction325
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction326
+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 listnode5 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction327
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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 tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction328
+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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction329
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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 tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction330
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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 listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+                                               null,
+                                               tkwsupernode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction331
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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
+                                       var tkwsupernode3 = nodearraylist2
+                                       assert tkwsupernode3 isa TKwsuper
+                                       var listnode4 = nodearraylist3 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction332
+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 listnode5 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa TKwinit
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction333
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa TKwinit
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(28), node_list)
+       end
+init do end
+end
+private class ReduceAction334
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       assert pclosuredefnode1 isa PClosureDef
+                                       if pclosuredefnode1 != null then
+                                               listnode2.add(pclosuredefnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(29), node_list)
+       end
+init do end
+end
+private class ReduceAction335
+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 pclosuredefnode1 = nodearraylist1
+                                       assert pclosuredefnode1 isa PClosureDef
+                                       var listnode2 = nodearraylist2 
+                                       assert listnode2 isa Array[Object]
+                                       if pclosuredefnode1 != null then
+                                               listnode3.add(pclosuredefnode1)
+                                       end
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(29), node_list)
+       end
+init do end
+end
+private class ReduceAction336
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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
+                                       var tkwdonode4 = nodearraylist2
+                                       assert tkwdonode4 isa TKwdo
+                                       var pexprnode5 = nodearraylist3
+                                       assert pexprnode5 isa PExpr
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode3,
+                                               tkwdonode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(30), node_list)
+       end
+init do end
+end
+private class ReduceAction337
+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 listnode4 = new Array[Object]
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa TKwdo
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa PExpr
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(30), node_list)
+       end
+init do end
+end
+private class ReduceAction338
+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 listnode3 = new Array[Object]
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var tkwdonode4 = nodearraylist2
+                                       assert tkwdonode4 isa TKwdo
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa PExpr
+                                       if pexprnode6 != null then
+                                               listnode7.add(pexprnode6)
+                                       end
+                                       var pexprnode5 = new ABlockExpr.init_ablockexpr(
+                                               listnode7
+                                       )
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode3,
+                                               tkwdonode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
+       end
+init do end
+end
+private class ReduceAction339
+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 listnode3 = new Array[Object]
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var tkwdonode4 = nodearraylist2
+                                       assert tkwdonode4 isa TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa PExpr
+                                       var listnode7 = nodearraylist5 
+                                       assert listnode7 isa Array[Object]
+                                       if pexprnode6 != null then
+                                               listnode8.add(pexprnode6)
+                                       end
+                                       if listnode7 != null then
+                                               if listnode8.is_empty then
+                                                       listnode8 = listnode7
+                                               else
+                                                       listnode8.append(listnode7)
+                                               end
+                                       end
+                                       var pexprnode5 = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode3,
+                                               tkwdonode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
+       end
+init do end
+end
+private class ReduceAction340
+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 tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa PExpr
+                                       if pexprnode7 != null then
+                                               listnode8.add(pexprnode7)
+                                       end
+                                       var pexprnode6 = new ABlockExpr.init_ablockexpr(
+                                               listnode8
+                                       )
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), 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 listnode4 = new Array[Object]
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa TKwdo
+                                       var listnode9 = new Array[Object]
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa PExpr
+                                       var listnode8 = nodearraylist6 
+                                       assert listnode8 isa Array[Object]
+                                       if pexprnode7 != null then
+                                               listnode9.add(pexprnode7)
+                                       end
+                                       if listnode8 != null then
+                                               if listnode9.is_empty then
+                                                       listnode9 = listnode8
+                                               else
+                                                       listnode9.append(listnode8)
+                                               end
+                                       end
+                                       var pexprnode6 = new ABlockExpr.init_ablockexpr(
+                                               listnode9
+                                       )
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
+       end
+init do end
+end
+private class ReduceAction342
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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
+                                       var tkwdonode4 = nodearraylist2
+                                       assert tkwdonode4 isa TKwdo
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode3,
+                                               tkwdonode4,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
+       end
+init do end
+end
+private class ReduceAction343
+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 listnode4 = new Array[Object]
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa TKwdo
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode4,
+                                               tkwdonode5,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(31), node_list)
+       end
+init do end
+end
+private class ReduceAction344
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(32), node_list)
+       end
+init do end
+end
+private class ReduceAction345
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa PType
+                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(32), node_list)
+       end
+init do end
+end
+private class ReduceAction346
+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 tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa TAssign
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               null,
+                                               tassignnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(32), node_list)
+       end
+init do end
+end
+private class ReduceAction347
+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 tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa PType
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(32), node_list)
+       end
+init do end
+end
+private class ReduceAction348
+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 pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa TAttrid
+                                       var tassignnode4 = nodearraylist5
+                                       assert tassignnode4 isa TAssign
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
+       end
+init do end
+end
+private class ReduceAction349
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tattridnode3 = nodearraylist1
+                                       assert tattridnode3 isa TAttrid
+                                       var tassignnode4 = nodearraylist2
+                                       assert tassignnode4 isa TAssign
+                                       var pexprnode5 = nodearraylist3
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
+       end
+init do end
+end
+private class ReduceAction350
+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 listnode5 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var tassignnode6 = nodearraylist6
+                                       assert tassignnode6 isa TAssign
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
+       end
+init do end
+end
+private class ReduceAction351
+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 listnode5 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var tassignnode6 = nodearraylist3
+                                       assert tassignnode6 isa TAssign
+                                       var pexprnode7 = nodearraylist4
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
+       end
+init do end
+end
+private class ReduceAction352
+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 listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa TAssign
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new ABraAssignExpr.init_abraassignexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               tassignnode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
+       end
+init do end
+end
+private class ReduceAction353
+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 pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa TAttrid
+                                       var passignopnode4 = nodearraylist5
+                                       assert passignopnode4 isa PAssignOp
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
+       end
+init do end
+end
+private class ReduceAction354
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tattridnode3 = nodearraylist1
+                                       assert tattridnode3 isa TAttrid
+                                       var passignopnode4 = nodearraylist2
+                                       assert passignopnode4 isa PAssignOp
+                                       var pexprnode5 = nodearraylist3
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
+       end
+init do end
+end
+private class ReduceAction355
+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 listnode5 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var passignopnode6 = nodearraylist6
+                                       assert passignopnode6 isa PAssignOp
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               passignopnode6,
+                                               pexprnode7
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
        end
 init do end
 end
-private class ReduceAction202
+private class ReduceAction356
 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 tnenode2 = nodearraylist1
-                                       assert tnenode2 isa TNe
-                                       var pmethidnode1 = new ANeMethid.init_anemethid(
-                                               tnenode2
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
-       end
-init do end
-end
-private class ReduceAction203
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tlenode2 = nodearraylist1
-                                       assert tlenode2 isa TLe
-                                       var pmethidnode1 = new ALeMethid.init_alemethid(
-                                               tlenode2
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var passignopnode6 = nodearraylist3
+                                       assert passignopnode6 isa PAssignOp
+                                       var pexprnode7 = nodearraylist4
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               passignopnode6,
+                                               pexprnode7
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
        end
 init do end
 end
-private class ReduceAction204
+private class ReduceAction357
 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 tgenode2 = nodearraylist1
-                                       assert tgenode2 isa TGe
-                                       var pmethidnode1 = new AGeMethid.init_agemethid(
-                                               tgenode2
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var passignopnode5 = nodearraylist3
+                                       assert passignopnode5 isa PAssignOp
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new ABraReassignExpr.init_abrareassignexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               passignopnode5,
+                                               pexprnode6
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(33), node_list)
        end
 init do end
 end
-private class ReduceAction205
+private class ReduceAction358
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var tltnode2 = nodearraylist1
-                                       assert tltnode2 isa TLt
-                                       var pmethidnode1 = new ALtMethid.init_altmethid(
-                                               tltnode2
+                                       var tpluseqnode2 = nodearraylist1
+                                       assert tpluseqnode2 isa TPluseq
+                                       var passignopnode1 = new APlusAssignOp.init_aplusassignop(
+                                               tpluseqnode2
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(34), node_list)
        end
 init do end
 end
-private class ReduceAction206
+private class ReduceAction359
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var tgtnode2 = nodearraylist1
-                                       assert tgtnode2 isa TGt
-                                       var pmethidnode1 = new AGtMethid.init_agtmethid(
-                                               tgtnode2
+                                       var tminuseqnode2 = nodearraylist1
+                                       assert tminuseqnode2 isa TMinuseq
+                                       var passignopnode1 = new AMinusAssignOp.init_aminusassignop(
+                                               tminuseqnode2
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(34), node_list)
        end
 init do end
 end
-private class ReduceAction207
+private class ReduceAction360
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa TObra
-                                       var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa TCbra
-                                       var pmethidnode1 = new ABraMethid.init_abramethid(
-                                               tobranode2,
-                                               tcbranode3
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa TKwdo
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(35), node_list)
        end
 init do end
 end
-private class ReduceAction208
+private class ReduceAction361
 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 tstarshipnode2 = nodearraylist1
-                                       assert tstarshipnode2 isa TStarship
-                                       var pmethidnode1 = new AStarshipMethid.init_astarshipmethid(
-                                               tstarshipnode2
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode4 = nodearraylist6
+                                       assert pexprnode4 isa PExpr
+                                       var pexprnode5 = nodearraylist8
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode5
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(36), node_list)
        end
 init do end
 end
-private class ReduceAction209
+private class ReduceAction362
 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 tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var tassignnode3 = nodearraylist2
-                                       assert tassignnode3 isa TAssign
-                                       var pmethidnode1 = new AAssignMethid.init_aassignmethid(
-                                               tidnode2,
-                                               tassignnode3
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode4 = nodearraylist6
+                                       assert pexprnode4 isa PExpr
+                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               null
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(36), node_list)
        end
 init do end
 end
-private class ReduceAction210
+private class ReduceAction363
 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 tobranode2 = nodearraylist1
-                                       assert tobranode2 isa TObra
-                                       var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa TCbra
-                                       var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa TAssign
-                                       var pmethidnode1 = new ABraassignMethid.init_abraassignmethid(
-                                               tobranode2,
-                                               tcbranode3,
-                                               tassignnode4
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa PExpr
+                                       if pexprnode5 != null then
+                                               listnode6.add(pexprnode5)
+                                       end
+                                       var pexprnode4 = new ABlockExpr.init_ablockexpr(
+                                               listnode6
                                        )
-                                       node_list = pmethidnode1
-                                       p.push(p.go_to(16), node_list)
-       end
-init do end
-end
-private class ReduceAction211
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var listnode2 = new Array[Object]
-                                       var psignaturenode1 = new ASignature.init_asignature(
-                                               listnode2,
-                                               null
+                                       var pexprnode7 = nodearraylist9
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode7
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(17), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(36), node_list)
        end
 init do end
 end
-private class ReduceAction212
+private class ReduceAction364
 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 listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
-                                       assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa PExpr
+                                       var listnode6 = nodearraylist8 
+                                       assert listnode6 isa Array[Object]
+                                       if pexprnode5 != null then
+                                               listnode7.add(pexprnode5)
+                                       end
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
                                                else
-                                                       listnode3.append(listnode2)
+                                                       listnode7.append(listnode6)
                                                end
                                        end
-                                       var psignaturenode1 = new ASignature.init_asignature(
-                                               listnode3,
-                                               null
+                                       var pexprnode4 = new ABlockExpr.init_ablockexpr(
+                                               listnode7
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(17), node_list)
+                                       var pexprnode8 = nodearraylist10
+                                       assert pexprnode8 isa PExpr
+                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(36), node_list)
        end
 init do end
 end
-private class ReduceAction213
+private class ReduceAction365
 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 listnode2 = new Array[Object]
-                                       var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa PType
-                                       var psignaturenode1 = new ASignature.init_asignature(
-                                               listnode2,
-                                               ptypenode3
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               null,
+                                               pexprnode5
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(17), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(36), node_list)
        end
 init do end
 end
-private class ReduceAction214
+private class ReduceAction366
 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 listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
-                                       assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-                                       end
-                                       var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa PType
-                                       var psignaturenode1 = new ASignature.init_asignature(
-                                               listnode3,
-                                               ptypenode4
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               null,
+                                               pexprnode5
                                        )
-                                       node_list = psignaturenode1
-                                       p.push(p.go_to(17), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(36), node_list)
        end
 init do end
 end
-private class ReduceAction215
+private class ReduceAction367
 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 listnode2 = new Array[Object]
-                                       var pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
-                                       if pparamnode1 != null then
-                                               listnode2.add(pparamnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(18), node_list)
+                                       var pexprnode1 = nodearraylist2
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction216
+private class ReduceAction368
 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 listnode3 = new Array[Object]
-                                       var pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
-                                       var listnode2 = nodearraylist4 
-                                       assert listnode2 isa Array[Object]
-                                       if pparamnode1 != null then
-                                               listnode3.add(pparamnode1)
-                                       end
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(18), node_list)
+                                       node_list = null
+                                       p.push(p.go_to(37), node_list)
        end
 init do end
 end
-private class ReduceAction217
+private class ReduceAction369
 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 listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(18), node_list)
+                                       var tkwwhilenode2 = nodearraylist1
+                                       assert tkwwhilenode2 isa TKwwhile
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(38), node_list)
        end
 init do end
 end
-private class ReduceAction218
+private class ReduceAction370
 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 pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(19), node_list)
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa TKwfor
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa TId
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa PExpr
+                                       var tkwdonode5 = nodearraylist9
+                                       assert tkwdonode5 isa TKwdo
+                                       var pexprnode6 = nodearraylist10
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(39), node_list)
        end
 init do end
 end
-private class ReduceAction219
+private class ReduceAction371
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var pparamnode1 = new AParam.init_aparam(
-                                               tidnode2,
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa TKwassert
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa PExpr
+                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
                                                null,
-                                               null
+                                               pexprnode4
                                        )
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(20), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction220
+private class ReduceAction372
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
-                                       var pparamnode1 = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               null
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa TKwassert
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa PExpr
+                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               tidnode3,
+                                               pexprnode4
                                        )
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(20), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(40), node_list)
        end
 init do end
 end
-private class ReduceAction221
+private class ReduceAction373
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
-                                       var tdotdotdotnode4 = nodearraylist3
-                                       assert tdotdotdotnode4 isa TDotdotdot
-                                       var pparamnode1 = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               tdotdotdotnode4
-                                       )
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(20), node_list)
+                                       var tidnode1 = nodearraylist1
+                                       assert tidnode1 isa TId
+                                       node_list = tidnode1
+                                       p.push(p.go_to(41), node_list)
        end
 init do end
 end
-private class ReduceAction222
+private class ReduceAction374
 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(21), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction223
+private class ReduceAction375
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -9933,102 +15890,179 @@ special ReduceAction
                                        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 listnode7 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       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
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(21), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction224
+private class ReduceAction376
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa PType
-                                       if ptypenode1 != null then
-                                               listnode2.add(ptypenode1)
+                                       var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
                                        end
-                                       node_list = listnode2
-                                       p.push(p.go_to(22), node_list)
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction225
+private class ReduceAction377
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa PType
-                                       var listnode2 = nodearraylist2 
-                                       assert listnode2 isa Array[Object]
-                                       if ptypenode1 != null then
-                                               listnode3.add(ptypenode1)
+                                       var listnode4 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
                                        end
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
+                                       var listnode5 = nodearraylist3 
+                                       assert listnode5 isa Array[Object]
+                                       if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
                                                else
-                                                       listnode3.append(listnode2)
+                                                       listnode6.append(listnode5)
                                                end
                                        end
-                                       node_list = listnode3
-                                       p.push(p.go_to(22), node_list)
+                                       var pexprnode1 = new ABraExpr.init_abraexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               listnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(42), node_list)
        end
 init do end
 end
-private class ReduceAction226
+private class ReduceAction378
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode1 = nodearraylist3
-                                       assert ptypenode1 isa PType
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(23), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(43), node_list)
        end
 init do end
 end
-private class ReduceAction227
+private class ReduceAction379
 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 ptypenode1 = nodearraylist3
-                                       assert ptypenode1 isa PType
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(24), node_list)
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa TKwthen
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa PExpr
+                                       var tkwelsenode6 = nodearraylist9
+                                       assert tkwelsenode6 isa TKwelse
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               tkwelsenode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(43), node_list)
        end
 init do end
 end
-private class ReduceAction228
+private class ReduceAction380
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -10037,104 +16071,89 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(25), node_list)
-       end
-init do end
-end
-private class ReduceAction229
-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 listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
-                                               listnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(25), node_list)
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction230
+private class ReduceAction381
 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 listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist3 
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-                                       end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
-                                               listnode4
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(25), node_list)
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction231
+private class ReduceAction382
 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
-                                       node_list = null
-                                       p.push(p.go_to(25), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(44), node_list)
        end
 init do end
 end
-private class ReduceAction232
+private class ReduceAction383
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(25), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(45), node_list)
        end
 init do end
 end
-private class ReduceAction233
+private class ReduceAction384
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       var tkwnotnode2 = nodearraylist1
+                                       assert tkwnotnode2 isa TKwnot
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                               tkwnotnode2,
+                                               pexprnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(26), node_list)
+                                       p.push(p.go_to(45), node_list)
        end
 init do end
 end
-private class ReduceAction234
+private class ReduceAction385
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -10143,148 +16162,209 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction235
+private class ReduceAction386
 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction236
+private class ReduceAction387
 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 tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction237
+private class ReduceAction388
 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 tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
-                                       var pexprnode3 = nodearraylist2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
                                        assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
+                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                               pexprnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction238
+private class ReduceAction389
 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 tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction239
+private class ReduceAction390
 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 tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa TKwabort
-                                       var pexprnode1 = new AAbortExpr.init_aabortexpr(
-                                               tkwabortnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction240
+private class ReduceAction391
 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 tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction241
+private class ReduceAction392
 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction242
+private class ReduceAction393
 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction243
+private class ReduceAction394
 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var ptypenode3 = nodearraylist4
+                                       assert ptypenode3 isa PType
+                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                               pexprnode2,
+                                               ptypenode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(46), node_list)
        end
 init do end
 end
-private class ReduceAction244
+private class ReduceAction395
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -10293,238 +16373,168 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(47), node_list)
        end
 init do end
 end
-private class ReduceAction245
+private class ReduceAction396
 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(47), node_list)
        end
 init do end
 end
-private class ReduceAction246
+private class ReduceAction397
 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 listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(47), node_list)
        end
 init do end
 end
-private class ReduceAction247
+private class ReduceAction398
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction248
+private class ReduceAction399
 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 listnode5 = new Array[Object]
-                                       var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
-                                               null,
-                                               tkwsupernode3,
-                                               listnode5
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction249
+private class ReduceAction400
 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 listnode5 = new Array[Object]
-                                       var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa PQualified
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               listnode5
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction250
+private class ReduceAction401
 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 listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(48), node_list)
        end
 init do end
 end
-private class ReduceAction251
+private class ReduceAction402
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(27), node_list)
+                                       p.push(p.go_to(49), node_list)
        end
 init do end
 end
-private class ReduceAction252
+private class ReduceAction403
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               null,
-                                               null,
-                                               null
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa TMinus
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                               tminusnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(49), node_list)
        end
 init do end
 end
-private class ReduceAction253
+private class ReduceAction404
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -10532,157 +16542,119 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               null,
-                                               null
+                                       var tkwoncenode2 = nodearraylist1
+                                       assert tkwoncenode2 isa TKwonce
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                               tkwoncenode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(49), node_list)
        end
 init do end
 end
-private class ReduceAction254
+private class ReduceAction405
 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 tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               null,
-                                               tassignnode5,
-                                               pexprnode6
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(50), node_list)
        end
 init do end
 end
-private class ReduceAction255
+private class ReduceAction406
 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 tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
-                                       var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa TAssign
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                       var listnode6 = new Array[Object]
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa PType
+                                       var listnode5 = nodearraylist4 
+                                       assert listnode5 isa Array[Object]
+                                       if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+                                       end
+                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               null,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(28), node_list)
+                                       p.push(p.go_to(50), node_list)
        end
 init do end
 end
-private class ReduceAction256
+private class ReduceAction407
 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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa TAssign
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode2 isa PExpr
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa TAttrid
+                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction257
+private class ReduceAction408
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
                                        assert tattridnode3 isa TAttrid
-                                       var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa TAssign
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction258
+private class ReduceAction409
 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 listnode5 = new Array[Object]
+                                       var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
                                        var tidnode3 = nodearraylist4
@@ -10696,32 +16668,26 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
-                                       var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa TAssign
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
-                                               tassignnode6,
-                                               pexprnode7
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction259
+private class ReduceAction410
 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 listnode5 = new Array[Object]
+                                       var listnode6 = new Array[Object]
                                        var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
@@ -10735,89 +16701,47 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
-                                       var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa TAssign
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
-                                               tassignnode6,
-                                               pexprnode7
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction260
+private class ReduceAction411
 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 listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
-                                       assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
+                                       var listnode5 = new Array[Object]
+                                       var tkwsupernode3 = nodearraylist1
+                                       assert tkwsupernode3 isa TKwsuper
+                                       var listnode4 = nodearraylist2 
+                                       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 tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraAssignExpr.init_abraassignexpr(
-                                               pexprnode2,
-                                               listnode4,
-                                               tassignnode5,
-                                               pexprnode6
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
-       end
-init do end
-end
-private class ReduceAction261
-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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa PAssignOp
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+                                               null,
+                                               tkwsupernode3,
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction262
+private class ReduceAction412
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -10825,32 +16749,35 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa PAssignOp
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                       var listnode5 = new Array[Object]
+                                       var pqualifiednode2 = nodearraylist1
+                                       assert pqualifiednode2 isa PQualified
+                                       var tkwsupernode3 = nodearraylist2
+                                       assert tkwsupernode3 isa TKwsuper
+                                       var listnode4 = nodearraylist3 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction263
+private class ReduceAction413
 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
@@ -10859,8 +16786,8 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa TKwinit
                                        var listnode4 = nodearraylist5 
                                        assert listnode4 isa Array[Object]
                                        if listnode4 != null then
@@ -10870,36 +16797,28 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
-                                       var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa PAssignOp
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               passignopnode6,
-                                               pexprnode7
+                                               tkwinitnode3,
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction264
+private class ReduceAction414
 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 listnode5 = new Array[Object]
                                        var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa TKwinit
                                        var listnode4 = nodearraylist2 
                                        assert listnode4 isa Array[Object]
                                        if listnode4 != null then
@@ -10909,32 +16828,25 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
-                                       var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa PAssignOp
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
-                                               tidnode3,
-                                               listnode5,
-                                               passignopnode6,
-                                               pexprnode7
+                                               tkwinitnode3,
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction265
+private class ReduceAction415
 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 listnode4 = new Array[Object]
+                                       var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
                                        var listnode3 = nodearraylist2 
@@ -10946,365 +16858,297 @@ special ReduceAction
                                                        listnode4.append(listnode3)
                                                end
                                        end
-                                       var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa PAssignOp
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraReassignExpr.init_abrareassignexpr(
+                                       var pexprnode1 = new ABraExpr.init_abraexpr(
                                                pexprnode2,
                                                listnode4,
-                                               passignopnode5,
-                                               pexprnode6
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(51), node_list)
+       end
+init do end
+end
+private class ReduceAction416
+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 listnode6 = new Array[Object]
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa PType
+                                       var tidnode4 = nodearraylist6
+                                       assert tidnode4 isa TId
+                                       var listnode5 = nodearraylist7 
+                                       assert listnode5 isa Array[Object]
+                                       if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+                                       end
+                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(29), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction266
+private class ReduceAction417
 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 tpluseqnode2 = nodearraylist1
-                                       assert tpluseqnode2 isa TPluseq
-                                       var passignopnode1 = new APlusAssignOp.init_aplusassignop(
-                                               tpluseqnode2
+                                       var pexprnode2 = nodearraylist3
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist7
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ACrangeExpr.init_acrangeexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = passignopnode1
-                                       p.push(p.go_to(30), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction267
+private class ReduceAction418
 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 tminuseqnode2 = nodearraylist1
-                                       assert tminuseqnode2 isa TMinuseq
-                                       var passignopnode1 = new AMinusAssignOp.init_aminusassignop(
-                                               tminuseqnode2
+                                       var pexprnode2 = nodearraylist3
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist7
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AOrangeExpr.init_aorangeexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
-                                       node_list = passignopnode1
-                                       p.push(p.go_to(30), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction268
+private class ReduceAction419
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa TKwdo
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1 
+                                       assert listnode2 isa Array[Object]
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       var pexprnode1 = new AArrayExpr.init_aarrayexpr(
+                                               listnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(31), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction269
+private class ReduceAction420
 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode5
+                                       var tkwselfnode2 = nodearraylist1
+                                       assert tkwselfnode2 isa TKwself
+                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                               tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction270
+private class ReduceAction421
 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               null
+                                       var tkwtruenode2 = nodearraylist1
+                                       assert tkwtruenode2 isa TKwtrue
+                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                               tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction271
+private class ReduceAction422
 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var listnode6 = new Array[Object]
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       if pexprnode5 != null then
-                                               listnode6.add(pexprnode5)
-                                       end
-                                       var pexprnode4 = new ABlockExpr.init_ablockexpr(
-                                               listnode6
-                                       )
-                                       var pexprnode7 = nodearraylist9
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode7
+                                       var tkwfalsenode2 = nodearraylist1
+                                       assert tkwfalsenode2 isa TKwfalse
+                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                               tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction272
+private class ReduceAction423
 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var listnode7 = new Array[Object]
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       var listnode6 = nodearraylist8 
-                                       assert listnode6 isa Array[Object]
-                                       if pexprnode5 != null then
-                                               listnode7.add(pexprnode5)
-                                       end
-                                       if listnode6 != null then
-                                               if listnode7.is_empty then
-                                                       listnode7 = listnode6
-                                               else
-                                                       listnode7.append(listnode6)
-                                               end
-                                       end
-                                       var pexprnode4 = new ABlockExpr.init_ablockexpr(
-                                               listnode7
-                                       )
-                                       var pexprnode8 = nodearraylist10
-                                       assert pexprnode8 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode8
+                                       var tkwnullnode2 = nodearraylist1
+                                       assert tkwnullnode2 isa TKwnull
+                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                               tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction273
+private class ReduceAction424
 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               null,
-                                               pexprnode5
+                                       var tnumbernode2 = nodearraylist1
+                                       assert tnumbernode2 isa TNumber
+                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                               tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction274
+private class ReduceAction425
 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               null,
-                                               pexprnode5
+                                       var tfloatnode2 = nodearraylist1
+                                       assert tfloatnode2 isa TFloat
+                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                               tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(32), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction275
+private class ReduceAction426
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa TChar
+                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                               tcharnode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(33), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction276
+private class ReduceAction427
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(33), node_list)
+                                       var tstringnode2 = nodearraylist1
+                                       assert tstringnode2 isa TString
+                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                               tstringnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction277
+private class ReduceAction428
 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 tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(34), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction278
+private class ReduceAction429
 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
-                                       )
+                                       var pexprnode1 = nodearraylist2
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(35), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction279
+private class ReduceAction430
 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
@@ -11312,44 +17156,53 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa TKwfor
-                                       var tidnode3 = nodearraylist3
-                                       assert tidnode3 isa TId
-                                       var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AForVardeclExpr.init_aforvardeclexpr(
-                                               tkwfornode2,
-                                               tidnode3,
-                                               pexprnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa TKwas
+                                       var ptypenode4 = nodearraylist8
+                                       assert ptypenode4 isa PType
+                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                               pexprnode2,
+                                               tkwasnode3,
+                                               ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(36), node_list)
+                                       p.push(p.go_to(51), node_list)
        end
 init do end
 end
-private class ReduceAction280
+private class ReduceAction431
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               null,
-                                               pexprnode4
+                                       var listnode4 = new Array[Object]
+                                       var listnode2 = nodearraylist1 
+                                       assert listnode2 isa Array[Object]
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa PExpr
+                                       if listnode2 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode2
+                                               else
+                                                       listnode4.append(listnode2)
+                                               end
+                                       end
+                                       if pexprnode3 != null then
+                                               listnode4.add(pexprnode3)
+                                       end
+                                       var pexprnode1 = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(37), node_list)
+                                       p.push(p.go_to(52), node_list)
        end
 init do end
 end
-private class ReduceAction281
+private class ReduceAction432
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -11357,371 +17210,360 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1 
+                                       assert listnode2 isa Array[Object]
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
                                        var pexprnode4 = nodearraylist3
                                        assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               tidnode3,
-                                               pexprnode4
+                                       if listnode2 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode2
+                                               else
+                                                       listnode5.append(listnode2)
+                                               end
+                                       end
+                                       if listnode3 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode3
+                                               else
+                                                       listnode5.append(listnode3)
+                                               end
+                                       end
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pexprnode1 = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(37), node_list)
+                                       p.push(p.go_to(52), node_list)
        end
 init do end
 end
-private class ReduceAction282
+private class ReduceAction433
 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 tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
-                                       node_list = tidnode1
-                                       p.push(p.go_to(38), node_list)
-       end
-init do end
-end
-private class ReduceAction283
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(39), node_list)
+                                       var pexprnode2 = nodearraylist3
+                                       assert pexprnode2 isa PExpr
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(53), node_list)
        end
 init do end
 end
-private class ReduceAction284
+private class ReduceAction434
 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
-                                       var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                       var tstartstringnode2 = nodearraylist1
+                                       assert tstartstringnode2 isa TStartString
+                                       var pexprnode1 = new AStartStringExpr.init_astartstringexpr(
+                                               tstartstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(39), node_list)
+                                       p.push(p.go_to(54), node_list)
        end
 init do end
 end
-private class ReduceAction285
+private class ReduceAction435
 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 listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(40), node_list)
+                                       var pexprnode2 = nodearraylist3
+                                       assert pexprnode2 isa PExpr
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(55), node_list)
        end
 init do end
 end
-private class ReduceAction286
+private class ReduceAction436
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tmidstringnode2 = nodearraylist1
+                                       assert tmidstringnode2 isa TMidString
+                                       var pexprnode1 = new AMidStringExpr.init_amidstringexpr(
+                                               tmidstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(40), node_list)
+                                       p.push(p.go_to(56), node_list)
        end
 init do end
 end
-private class ReduceAction287
+private class ReduceAction437
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tendstringnode2 = nodearraylist1
+                                       assert tendstringnode2 isa TEndString
+                                       var pexprnode1 = new AEndStringExpr.init_aendstringexpr(
+                                               tendstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(40), node_list)
+                                       p.push(p.go_to(57), node_list)
        end
 init do end
 end
-private class ReduceAction288
+private class ReduceAction438
 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 pexprnode1 = nodearraylist1
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
                                        assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(41), node_list)
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction289
+private class ReduceAction439
 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 tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
-                                               tkwnotnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(41), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa PExpr
+                                       var listnode2 = nodearraylist5 
+                                       assert listnode2 isa Array[Object]
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction290
+private class ReduceAction440
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction291
+private class ReduceAction441
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(58), node_list)
        end
 init do end
 end
-private class ReduceAction292
+private class ReduceAction442
 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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa PExpr
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction293
+private class ReduceAction443
 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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa PExpr
+                                       var listnode2 = nodearraylist5 
+                                       assert listnode2 isa Array[Object]
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction294
+private class ReduceAction444
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction295
+private class ReduceAction445
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction296
+private class ReduceAction446
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
+                                       p.push(p.go_to(59), node_list)
        end
 init do end
 end
-private class ReduceAction297
+private class ReduceAction447
 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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa PExpr
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(60), node_list)
        end
 init do end
 end
-private class ReduceAction298
+private class ReduceAction448
 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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa PExpr
+                                       var listnode2 = nodearraylist5 
+                                       assert listnode2 isa Array[Object]
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(60), node_list)
        end
 init do end
 end
-private class ReduceAction299
+private class ReduceAction449
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -11730,522 +17572,396 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
-                                               pexprnode2,
-                                               ptypenode3
-                                       )
+                                       var pexprnode1 = nodearraylist3
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(42), node_list)
+                                       p.push(p.go_to(61), node_list)
        end
 init do end
 end
-private class ReduceAction300
+private class ReduceAction450
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       var listnode2 = new Array[Object]
+                                       var tidnode1 = nodearraylist1
+                                       assert tidnode1 isa TId
+                                       if tidnode1 != null then
+                                               listnode2.add(tidnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(62), node_list)
        end
 init do end
 end
-private class ReduceAction301
+private class ReduceAction451
 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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var listnode1 = nodearraylist1 
+                                       assert listnode1 isa Array[Object]
+                                       var tidnode2 = nodearraylist5
+                                       assert tidnode2 isa TId
+                                       if listnode1 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode1
+                                               else
+                                                       listnode3.append(listnode1)
+                                               end
+                                       end
+                                       if tidnode2 != null then
+                                               listnode3.add(tidnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(62), node_list)
        end
 init do end
 end
-private class ReduceAction302
+private class ReduceAction452
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode2 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa TClassid
+                                       var pqualifiednode1 = new AQualified.init_aqualified(
+                                               listnode2,
+                                               tclassidnode3
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(43), node_list)
+                                       node_list = pqualifiednode1
+                                       p.push(p.go_to(63), node_list)
        end
 init do end
 end
-private class ReduceAction303
+private class ReduceAction453
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1 
+                                       assert listnode2 isa Array[Object]
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       var tclassidnode4 = nodearraylist2
+                                       assert tclassidnode4 isa TClassid
+                                       var pqualifiednode1 = new AQualified.init_aqualified(
+                                               listnode3,
+                                               tclassidnode4
+                                       )
+                                       node_list = pqualifiednode1
+                                       p.push(p.go_to(63), node_list)
        end
 init do end
 end
-private class ReduceAction304
+private class ReduceAction454
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1 
+                                       assert listnode2 isa Array[Object]
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       var pqualifiednode1 = new AQualified.init_aqualified(
+                                               listnode3,
+                                               null
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       node_list = pqualifiednode1
+                                       p.push(p.go_to(63), node_list)
        end
 init do end
 end
-private class ReduceAction305
+private class ReduceAction455
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       var tidnode1 = nodearraylist1
+                                       assert tidnode1 isa TId
+                                       node_list = tidnode1
+                                       p.push(p.go_to(64), node_list)
        end
 init do end
 end
-private class ReduceAction306
+private class ReduceAction456
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(44), node_list)
+                                       var tclassidnode1 = nodearraylist1
+                                       assert tclassidnode1 isa TClassid
+                                       node_list = tclassidnode1
+                                       p.push(p.go_to(65), node_list)
        end
 init do end
 end
-private class ReduceAction307
+private class ReduceAction457
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(45), node_list)
+                                       p.push(p.go_to(66), node_list)
        end
 init do end
 end
-private class ReduceAction308
+private class ReduceAction458
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
-                                               tminusnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(45), node_list)
+                                       p.push(p.go_to(66), node_list)
        end
 init do end
 end
-private class ReduceAction309
+private class ReduceAction459
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
-                                               tkwoncenode2,
-                                               pexprnode3
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist1 
+                                       assert listnode2 isa Array[Object]
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       var pdocnode1 = new ADoc.init_adoc(
+                                               listnode3
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(45), node_list)
-       end
-init do end
-end
-private class ReduceAction310
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(67), node_list)
        end
 init do end
 end
-private class ReduceAction311
+private class ReduceAction460
 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 listnode6 = new Array[Object]
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
-                                       assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
+                                       var listnode3 = new Array[Object]
+                                       var listnode2 = nodearraylist2 
+                                       assert listnode2 isa Array[Object]
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
                                                else
-                                                       listnode6.append(listnode5)
+                                                       listnode3.append(listnode2)
                                                end
                                        end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               null,
-                                               listnode6
+                                       var pdocnode1 = new ADoc.init_adoc(
+                                               listnode3
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(46), node_list)
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(67), node_list)
        end
 init do end
 end
-private class ReduceAction312
+private class ReduceAction461
 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 tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = null
+                                       p.push(p.go_to(67), node_list)
        end
 init do end
 end
-private class ReduceAction313
+private class ReduceAction462
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = null
+                                       p.push(p.go_to(68), node_list)
        end
 init do end
 end
-private class ReduceAction314
+private class ReduceAction463
 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 listnode5 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       var pdocnode1 = nodearraylist1
+                                       assert pdocnode1 isa PDoc
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(68), node_list)
        end
 init do end
 end
-private class ReduceAction315
+private class ReduceAction464
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               tidnode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(69), node_list)
        end
 init do end
 end
-private class ReduceAction316
+private class ReduceAction465
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
-                                               null,
-                                               tkwsupernode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(69), node_list)
        end
 init do end
 end
-private class ReduceAction317
+private class ReduceAction466
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: 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
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(69), node_list)
        end
 init do end
 end
-private class ReduceAction318
+private class ReduceAction467
 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 listnode5 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       var ppropdefnode1 = nodearraylist1
+                                       assert ppropdefnode1 isa PPropdef
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(70), node_list)
        end
 init do end
 end
-private class ReduceAction319
+private class ReduceAction468
 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 listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
-                                       )
-                                       var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                       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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction320
+private class ReduceAction469
 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 listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
-                                       assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode3
-                                               else
-                                                       listnode4.append(listnode3)
-                                               end
-                                       end
-                                       var pexprnode1 = new ABraExpr.init_abraexpr(
-                                               pexprnode2,
-                                               listnode4
+                                       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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist8
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction321
+private class ReduceAction470
 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
@@ -12253,34 +17969,33 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
-                                       assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               tidnode4,
-                                               listnode6
+                                       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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction322
+private class ReduceAction471
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -12294,26 +18009,39 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ACrangeExpr.init_acrangeexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var pexprnode8 = nodearraylist8
+                                       assert pexprnode8 isa PExpr
+                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pexprnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction323
+private class ReduceAction472
 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
@@ -12321,172 +18049,325 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrangeExpr.init_aorangeexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction324
+private class ReduceAction473
 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 listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
-                                       assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-                                       end
-                                       var pexprnode1 = new AArrayExpr.init_aarrayexpr(
-                                               listnode3
+                                       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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction325
+private class ReduceAction474
 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 tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
-                                               tkwselfnode2
+                                       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 psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa PSignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa TString
+                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction326
+private class ReduceAction475
 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 tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
-                                               tkwtruenode2
+                                       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 psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa PSignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa TString
+                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(71), node_list)
        end
 init do end
 end
-private class ReduceAction327
+private class ReduceAction476
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
-                                               tkwfalsenode2
+                                       var listnode3 = new Array[Object]
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa TClassid
+                                       var ptypenode1 = new AType.init_atype(
+                                               tclassidnode2,
+                                               listnode3
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(72), node_list)
        end
 init do end
 end
-private class ReduceAction328
+private class ReduceAction477
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
-                                               tkwnullnode2
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(73), node_list)
        end
 init do end
 end
-private class ReduceAction329
+private class ReduceAction478
 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 tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
-                                               tnumbernode2
+                                       var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(73), node_list)
        end
 init do end
 end
-private class ReduceAction330
+private class ReduceAction479
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
-                                               tfloatnode2
+                                       var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(73), node_list)
        end
 init do end
 end
-private class ReduceAction331
+private class ReduceAction480
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
-                                               tcharnode2
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction332
+private class ReduceAction481
 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 tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
-                                               tstringnode2
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa TKwthen
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa PExpr
+                                       var tkwelsenode6 = nodearraylist9
+                                       assert tkwelsenode6 isa TKwelse
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               tkwelsenode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(74), node_list)
        end
 init do end
 end
-private class ReduceAction333
+private class ReduceAction482
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -12495,87 +18376,68 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(75), node_list)
        end
 init do end
 end
-private class ReduceAction334
+private class ReduceAction483
 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 pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(75), node_list)
        end
 init do end
 end
-private class ReduceAction335
+private class ReduceAction484
 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 pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
-                                       var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AAndExpr.init_aandexpr(
                                                pexprnode2,
-                                               tkwasnode3,
-                                               ptypenode4
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(47), node_list)
+                                       p.push(p.go_to(75), node_list)
        end
 init do end
 end
-private class ReduceAction336
+private class ReduceAction485
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
-                                       assert listnode2 isa Array[Object]
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       if listnode2 != null then
-                                               if listnode4.is_empty then
-                                                       listnode4 = listnode2
-                                               else
-                                                       listnode4.append(listnode2)
-                                               end
-                                       end
-                                       if pexprnode3 != null then
-                                               listnode4.add(pexprnode3)
-                                       end
-                                       var pexprnode1 = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode4
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(48), node_list)
+                                       p.push(p.go_to(76), node_list)
        end
 init do end
 end
-private class ReduceAction337
+private class ReduceAction486
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -12583,80 +18445,55 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
-                                       assert listnode2 isa Array[Object]
-                                       var listnode3 = nodearraylist2 
-                                       assert listnode3 isa Array[Object]
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa PExpr
-                                       if listnode2 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode2
-                                               else
-                                                       listnode5.append(listnode2)
-                                               end
-                                       end
-                                       if listnode3 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode3
-                                               else
-                                                       listnode5.append(listnode3)
-                                               end
-                                       end
-                                       if pexprnode4 != null then
-                                               listnode5.add(pexprnode4)
-                                       end
-                                       var pexprnode1 = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode5
+                                       var tkwnotnode2 = nodearraylist1
+                                       assert tkwnotnode2 isa TKwnot
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                               tkwnotnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(48), node_list)
+                                       p.push(p.go_to(76), node_list)
        end
 init do end
 end
-private class ReduceAction338
+private class ReduceAction487
 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 listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
-                                       var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(49), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction339
+private class ReduceAction488
 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 tstartstringnode2 = nodearraylist1
-                                       assert tstartstringnode2 isa TStartString
-                                       var pexprnode1 = new AStartStringExpr.init_astartstringexpr(
-                                               tstartstringnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(50), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction340
+private class ReduceAction489
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -12665,278 +18502,288 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       var pexprnode2 = nodearraylist3
+                                       var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(51), node_list)
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction341
+private class ReduceAction490
 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 tmidstringnode2 = nodearraylist1
-                                       assert tmidstringnode2 isa TMidString
-                                       var pexprnode1 = new AMidStringExpr.init_amidstringexpr(
-                                               tmidstringnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(52), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction342
+private class ReduceAction491
 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 tendstringnode2 = nodearraylist1
-                                       assert tendstringnode2 isa TEndString
-                                       var pexprnode1 = new AEndStringExpr.init_aendstringexpr(
-                                               tendstringnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(53), node_list)
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction343
+private class ReduceAction492
 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 listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(54), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction344
+private class ReduceAction493
 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 listnode3 = new Array[Object]
-                                       var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
-                                       assert listnode2 isa Array[Object]
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(54), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction345
+private class ReduceAction494
 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 listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(54), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction346
+private class ReduceAction495
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(54), node_list)
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction347
+private class ReduceAction496
 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 listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(55), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var ptypenode3 = nodearraylist4
+                                       assert ptypenode3 isa PType
+                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                               pexprnode2,
+                                               ptypenode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(77), node_list)
        end
 init do end
 end
-private class ReduceAction348
+private class ReduceAction497
 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 listnode3 = new Array[Object]
-                                       var pexprnode1 = nodearraylist3
+                                       var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
-                                       assert listnode2 isa Array[Object]
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(55), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction349
+private class ReduceAction498
 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 listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(55), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction350
+private class ReduceAction499
 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 listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(55), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(78), node_list)
        end
 init do end
 end
-private class ReduceAction351
+private class ReduceAction500
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(55), node_list)
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction352
+private class ReduceAction501
 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 listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(56), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction353
+private class ReduceAction502
 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 listnode3 = new Array[Object]
-                                       var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
-                                       assert listnode2 isa Array[Object]
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-                                       end
-                                       node_list = listnode3
-                                       p.push(p.go_to(56), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction354
+private class ReduceAction503
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -12945,414 +18792,525 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                               pexprnode2,
+                                               pexprnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(57), node_list)
+                                       p.push(p.go_to(79), node_list)
        end
 init do end
 end
-private class ReduceAction355
+private class ReduceAction504
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa TClassid
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
-                                               listnode2,
-                                               tclassidnode3
-                                       )
-                                       node_list = pqualifiednode1
-                                       p.push(p.go_to(58), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction356
+private class ReduceAction505
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
-                                       assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-                                       end
-                                       var tclassidnode4 = nodearraylist2
-                                       assert tclassidnode4 isa TClassid
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
-                                               listnode3,
-                                               tclassidnode4
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa TMinus
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                               tminusnode2,
+                                               pexprnode3
                                        )
-                                       node_list = pqualifiednode1
-                                       p.push(p.go_to(58), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction357
+private class ReduceAction506
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
-                                       assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
-                                               else
-                                                       listnode3.append(listnode2)
-                                               end
-                                       end
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
-                                               listnode3,
-                                               null
+                                       var tkwoncenode2 = nodearraylist1
+                                       assert tkwoncenode2 isa TKwonce
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                               tkwoncenode2,
+                                               pexprnode3
                                        )
-                                       node_list = pqualifiednode1
-                                       p.push(p.go_to(58), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(80), node_list)
        end
 init do end
 end
-private class ReduceAction358
+private class ReduceAction507
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
-                                       node_list = tidnode1
-                                       p.push(p.go_to(59), node_list)
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(81), node_list)
        end
 init do end
 end
-private class ReduceAction359
+private class ReduceAction508
 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 tclassidnode1 = nodearraylist1
-                                       assert tclassidnode1 isa TClassid
-                                       node_list = tclassidnode1
-                                       p.push(p.go_to(60), node_list)
+                                       var listnode6 = new Array[Object]
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa PType
+                                       var listnode5 = nodearraylist4 
+                                       assert listnode5 isa Array[Object]
+                                       if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+                                       end
+                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               null,
+                                               listnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(81), node_list)
        end
 init do end
 end
-private class ReduceAction360
+private class ReduceAction509
 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
-                                       p.push(p.go_to(61), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa TAttrid
+                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                               pexprnode2,
+                                               tattridnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction361
+private class ReduceAction510
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       p.push(p.go_to(61), node_list)
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tattridnode3 = nodearraylist1
+                                       assert tattridnode3 isa TAttrid
+                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                               pexprnode2,
+                                               tattridnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction362
+private class ReduceAction511
 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 listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
-                                       assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
+                                       var listnode5 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
                                                else
-                                                       listnode3.append(listnode2)
+                                                       listnode5.append(listnode4)
                                                end
                                        end
-                                       var pdocnode1 = new ADoc.init_adoc(
-                                               listnode3
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
-                                       node_list = pdocnode1
-                                       p.push(p.go_to(62), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction363
+private class ReduceAction512
 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 listnode2 = nodearraylist2 
-                                       assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
-                                               if listnode3.is_empty then
-                                                       listnode3 = listnode2
+                                       var listnode5 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
                                                else
-                                                       listnode3.append(listnode2)
+                                                       listnode5.append(listnode4)
                                                end
                                        end
-                                       var pdocnode1 = new ADoc.init_adoc(
-                                               listnode3
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
-                                       node_list = pdocnode1
-                                       p.push(p.go_to(62), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction364
+private class ReduceAction513
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(62), node_list)
-       end
-init do end
-end
-private class ReduceAction365
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       node_list = null
-                                       p.push(p.go_to(63), node_list)
+                                       var listnode5 = new Array[Object]
+                                       var tkwsupernode3 = nodearraylist1
+                                       assert tkwsupernode3 isa TKwsuper
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+                                               null,
+                                               tkwsupernode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction366
+private class ReduceAction514
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       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(63), node_list)
+                                       var listnode5 = new Array[Object]
+                                       var pqualifiednode2 = nodearraylist1
+                                       assert pqualifiednode2 isa PQualified
+                                       var tkwsupernode3 = nodearraylist2
+                                       assert tkwsupernode3 isa TKwsuper
+                                       var listnode4 = nodearraylist3 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction367
+private class ReduceAction515
 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
-                                       p.push(p.go_to(64), node_list)
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa TKwinit
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction368
+private class ReduceAction516
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       p.push(p.go_to(64), node_list)
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa TKwinit
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               listnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction369
+private class ReduceAction517
 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
-                                       p.push(p.go_to(64), node_list)
+                                       var listnode6 = new Array[Object]
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa PType
+                                       var tidnode4 = nodearraylist6
+                                       assert tidnode4 isa TId
+                                       var listnode5 = nodearraylist7 
+                                       assert listnode5 isa Array[Object]
+                                       if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+                                       end
+                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               listnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction370
+private class ReduceAction518
 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
+                                       var tkwselfnode2 = nodearraylist1
+                                       assert tkwselfnode2 isa TKwself
+                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                               tkwselfnode2
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(65), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction371
+private class ReduceAction519
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var tkwtruenode2 = nodearraylist1
+                                       assert tkwtruenode2 isa TKwtrue
+                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                               tkwtruenode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(66), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
-end
-private class ReduceAction372
-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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
-                                       var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+end
+private class ReduceAction520
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwfalsenode2 = nodearraylist1
+                                       assert tkwfalsenode2 isa TKwfalse
+                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                               tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(66), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction373
+private class ReduceAction521
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var tkwnullnode2 = nodearraylist1
+                                       assert tkwnullnode2 isa TKwnull
+                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                               tkwnullnode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(67), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction374
+private class ReduceAction522
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tnumbernode2 = nodearraylist1
+                                       assert tnumbernode2 isa TNumber
+                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                               tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(67), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction375
+private class ReduceAction523
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tfloatnode2 = nodearraylist1
+                                       assert tfloatnode2 isa TFloat
+                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                               tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(67), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction376
+private class ReduceAction524
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa TChar
+                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                               tcharnode2
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(68), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction377
+private class ReduceAction525
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
-                                               tkwnotnode2,
-                                               pexprnode3
+                                       var tstringnode2 = nodearraylist1
+                                       assert tstringnode2 isa TString
+                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                               tstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(68), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction378
+private class ReduceAction526
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -13361,77 +19319,70 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction379
+private class ReduceAction527
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist2
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction380
+private class ReduceAction528
 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 pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa TKwas
+                                       var ptypenode4 = nodearraylist8
+                                       assert ptypenode4 isa PType
+                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
-                                               pexprnode3
+                                               tkwasnode3,
+                                               ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(82), node_list)
        end
 init do end
 end
-private class ReduceAction381
+private class ReduceAction529
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction382
+private class ReduceAction530
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -13440,266 +19391,238 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist2
                                        assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction383
+private class ReduceAction531
 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 pexprnode2 = nodearraylist1
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist2
                                        assert pexprnode2 isa PExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode3 = nodearraylist3 
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction384
+private class ReduceAction532
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction385
+private class ReduceAction533
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(83), node_list)
        end
 init do end
 end
-private class ReduceAction386
+private class ReduceAction534
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
-                                               pexprnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction387
+private class ReduceAction535
 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 ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
-                                               pexprnode2,
-                                               ptypenode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(69), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction388
+private class ReduceAction536
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa TKwreturn
+                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               null
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(70), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction389
+private class ReduceAction537
 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 pexprnode3 = nodearraylist4
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa TKwreturn
+                                       var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
-                                               pexprnode2,
+                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(70), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction390
+private class ReduceAction538
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa TKwbreak
+                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(70), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction391
+private class ReduceAction539
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa TKwbreak
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               pexprnode3
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(71), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction392
+private class ReduceAction540
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwabortnode2 = nodearraylist1
+                                       assert tkwabortnode2 isa TKwabort
+                                       var pexprnode1 = new AAbortExpr.init_aabortexpr(
+                                               tkwabortnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(71), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction393
+private class ReduceAction541
 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 pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(71), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction394
+private class ReduceAction542
 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 pexprnode3 = nodearraylist4
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
-                                               pexprnode2,
+                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(71), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction395
+private class ReduceAction543
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -13708,53 +19631,37 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(72), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction396
+private class ReduceAction544
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
-                                               tminusnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(72), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction397
+private class ReduceAction545
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
-                                               tkwoncenode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(72), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction398
+private class ReduceAction546
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -13763,96 +19670,105 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(73), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction399
+private class ReduceAction547
 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 listnode6 = new Array[Object]
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
-                                       assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               null,
-                                               listnode6
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(73), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction400
+private class ReduceAction548
 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 listnode5 = new Array[Object]
+                                       var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tattridnode3
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction401
+private class ReduceAction549
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: 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 tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tattridnode3
+                                               tidnode3,
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction402
+private class ReduceAction550
 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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
                                        var tidnode3 = nodearraylist4
@@ -13866,24 +19782,36 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
                                        var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction403
+private class ReduceAction551
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: 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 tidnode3 = nodearraylist1
@@ -13894,20 +19822,30 @@ special ReduceAction
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
-                                                       listnode5.append(listnode4)
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
                                                end
                                        end
                                        var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction404
+private class ReduceAction552
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -13932,11 +19870,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction405
+private class ReduceAction553
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -13964,11 +19902,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction406
+private class ReduceAction554
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -13998,11 +19936,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction407
+private class ReduceAction555
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14029,191 +19967,259 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(84), node_list)
        end
 init do end
 end
-private class ReduceAction408
+private class ReduceAction556
 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 listnode6 = new Array[Object]
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
-                                       assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
-                                               if listnode6.is_empty then
-                                                       listnode6 = listnode5
-                                               else
-                                                       listnode6.append(listnode5)
-                                               end
+                                       var listnode2 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       assert pclosuredefnode1 isa PClosureDef
+                                       if pclosuredefnode1 != null then
+                                               listnode2.add(pclosuredefnode1)
                                        end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               tidnode4,
-                                               listnode6
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
-       end
-init do end
-end
-private class ReduceAction409
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
-                                               tkwselfnode2
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       node_list = listnode2
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction410
+private class ReduceAction557
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
-                                               tkwtruenode2
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       var listnode3 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       assert pclosuredefnode1 isa PClosureDef
+                                       var listnode2 = nodearraylist2 
+                                       assert listnode2 isa Array[Object]
+                                       if pclosuredefnode1 != null then
+                                               listnode3.add(pclosuredefnode1)
+                                       end
+                                       if listnode2 != null then
+                                               if listnode3.is_empty then
+                                                       listnode3 = listnode2
+                                               else
+                                                       listnode3.append(listnode2)
+                                               end
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(85), node_list)
        end
 init do end
 end
-private class ReduceAction411
+private class ReduceAction558
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
-                                               tkwfalsenode2
+                                       var listnode3 = new Array[Object]
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var tkwdonode4 = nodearraylist2
+                                       assert tkwdonode4 isa TKwdo
+                                       var pexprnode5 = nodearraylist3
+                                       assert pexprnode5 isa PExpr
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode3,
+                                               tkwdonode4,
+                                               pexprnode5
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction412
+private class ReduceAction559
 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 tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
-                                               tkwnullnode2
+                                       var listnode4 = new Array[Object]
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa TKwwith
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa TKwdo
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa PExpr
+                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                               tkwwithnode2,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       node_list = pclosuredefnode1
+                                       p.push(p.go_to(86), node_list)
        end
 init do end
 end
-private class ReduceAction413
+private class ReduceAction560
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
-                                               tnumbernode2
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction414
+private class ReduceAction561
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
-                                               tfloatnode2
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa PType
+                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               null,
+                                               null
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction415
+private class ReduceAction562
 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 tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
-                                               tcharnode2
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa TAssign
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               null,
+                                               tassignnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction416
+private class ReduceAction563
 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 tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
-                                               tstringnode2
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa PType
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(87), node_list)
        end
 init do end
 end
-private class ReduceAction417
+private class ReduceAction564
 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa TAttrid
+                                       var tassignnode4 = nodearraylist5
+                                       assert tassignnode4 isa TAssign
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction418
+private class ReduceAction565
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14221,21 +20227,30 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tattridnode3 = nodearraylist1
+                                       assert tattridnode3 isa TAttrid
+                                       var tassignnode4 = nodearraylist2
+                                       assert tassignnode4 isa TAssign
+                                       var pexprnode5 = nodearraylist3
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction419
+private class ReduceAction566
 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
@@ -14243,36 +20258,37 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
-                                       var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var tassignnode6 = nodearraylist6
+                                       assert tassignnode6 isa TAssign
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
-                                               tkwasnode3,
-                                               ptypenode4
+                                               tidnode3,
+                                               listnode5,
+                                               tassignnode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(74), node_list)
-       end
-init do end
-end
-private class ReduceAction420
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(75), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction421
+private class ReduceAction567
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14281,38 +20297,50 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
                                        end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
-                                               listnode3
+                                       var tassignnode6 = nodearraylist3
+                                       assert tassignnode6 isa TAssign
+                                       var pexprnode7 = nodearraylist4
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               tassignnode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(75), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction422
+private class ReduceAction568
 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 listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist2
+                                       var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist3 
+                                       var listnode3 = nodearraylist2 
                                        assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
                                        if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
@@ -14320,201 +20348,360 @@ special ReduceAction
                                                        listnode4.append(listnode3)
                                                end
                                        end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
-                                               listnode4
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa TAssign
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new ABraAssignExpr.init_abraassignexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               tassignnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(75), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction423
+private class ReduceAction569
 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
-                                       node_list = null
-                                       p.push(p.go_to(75), node_list)
-       end
-init do end
-end
-private class ReduceAction424
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(75), node_list)
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa TAttrid
+                                       var passignopnode4 = nodearraylist5
+                                       assert passignopnode4 isa PAssignOp
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction425
+private class ReduceAction570
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tattridnode3 = nodearraylist1
+                                       assert tattridnode3 isa TAttrid
+                                       var passignopnode4 = nodearraylist2
+                                       assert passignopnode4 isa PAssignOp
+                                       var pexprnode5 = nodearraylist3
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction426
+private class ReduceAction571
 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var passignopnode6 = nodearraylist6
+                                       assert passignopnode6 isa PAssignOp
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               passignopnode6,
+                                               pexprnode7
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction427
+private class ReduceAction572
 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 tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               null
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var passignopnode6 = nodearraylist3
+                                       assert passignopnode6 isa PAssignOp
+                                       var pexprnode7 = nodearraylist4
+                                       assert pexprnode7 isa PExpr
+                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               passignopnode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction428
+private class ReduceAction573
 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 tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               pexprnode3
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
+                                               else
+                                                       listnode4.append(listnode3)
+                                               end
+                                       end
+                                       var passignopnode5 = nodearraylist3
+                                       assert passignopnode5 isa PAssignOp
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new ABraReassignExpr.init_abrareassignexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               passignopnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(88), node_list)
        end
 init do end
 end
-private class ReduceAction429
+private class ReduceAction574
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa TKwdo
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode1 = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(89), node_list)
        end
 init do end
 end
-private class ReduceAction430
+private class ReduceAction575
 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 tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa TKwabort
-                                       var pexprnode1 = new AAbortExpr.init_aabortexpr(
-                                               tkwabortnode2
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var pexprnode4 = nodearraylist6
+                                       assert pexprnode4 isa PExpr
+                                       var pexprnode5 = nodearraylist8
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(90), node_list)
        end
 init do end
 end
-private class ReduceAction431
+private class ReduceAction576
 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 tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2
+                                       var tkwwhilenode2 = nodearraylist1
+                                       assert tkwwhilenode2 isa TKwwhile
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa PExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa PExpr
+                                       var pexprnode1 = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
-       end
-init do end
-end
-private class ReduceAction432
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(91), node_list)
        end
 init do end
 end
-private class ReduceAction433
+private class ReduceAction577
 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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa TKwfor
+                                       var tidnode3 = nodearraylist3
+                                       assert tidnode3 isa TId
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa PExpr
+                                       var tkwdonode5 = nodearraylist9
+                                       assert tkwdonode5 isa TKwdo
+                                       var pexprnode6 = nodearraylist10
+                                       assert pexprnode6 isa PExpr
+                                       var pexprnode1 = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwdonode5,
+                                               pexprnode6
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(92), node_list)
        end
 init do end
 end
-private class ReduceAction434
+private class ReduceAction578
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa TKwassert
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa PExpr
+                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               null,
+                                               pexprnode4
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(93), node_list)
        end
 init do end
 end
-private class ReduceAction435
+private class ReduceAction579
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa TKwassert
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa TId
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa PExpr
+                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               tidnode3,
+                                               pexprnode4
+                                       )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(93), node_list)
        end
 init do end
 end
-private class ReduceAction436
+private class ReduceAction580
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14523,21 +20710,23 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction437
+private class ReduceAction581
 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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
                                        var tidnode3 = nodearraylist4
@@ -14551,24 +20740,36 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
                                        var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction438
+private class ReduceAction582
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: 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 tidnode3 = nodearraylist1
@@ -14582,92 +20783,96 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
                                        var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction439
+private class ReduceAction583
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
+                                       var listnode4 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var listnode3 = nodearraylist2 
+                                       assert listnode3 isa Array[Object]
+                                       if listnode3 != null then
+                                               if listnode4.is_empty then
+                                                       listnode4 = listnode3
                                                else
-                                                       listnode5.append(listnode4)
+                                                       listnode4.append(listnode3)
                                                end
                                        end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
-                                               null,
-                                               tkwsupernode3,
-                                               listnode5
+                                       var listnode5 = nodearraylist3 
+                                       assert listnode5 isa Array[Object]
+                                       if listnode5 != null then
+                                               if listnode6.is_empty then
+                                                       listnode6 = listnode5
+                                               else
+                                                       listnode6.append(listnode5)
+                                               end
+                                       end
+                                       var pexprnode1 = new ABraExpr.init_abraexpr(
+                                               pexprnode2,
+                                               listnode4,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(94), node_list)
        end
 init do end
 end
-private class ReduceAction440
+private class ReduceAction584
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: 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
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
-                                       assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
-                                               if listnode5.is_empty then
-                                                       listnode5 = listnode4
-                                               else
-                                                       listnode5.append(listnode4)
-                                               end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               listnode5
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction441
+private class ReduceAction585
 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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
                                        var listnode4 = nodearraylist5 
                                        assert listnode4 isa Array[Object]
                                        if listnode4 != null then
@@ -14677,28 +20882,40 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction442
+private class ReduceAction586
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: 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 tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
                                        var listnode4 = nodearraylist2 
                                        assert listnode4 isa Array[Object]
                                        if listnode4 != null then
@@ -14708,69 +20925,40 @@ special ReduceAction
                                                        listnode5.append(listnode4)
                                                end
                                        end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               listnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(76), node_list)
-       end
-init do end
-end
-private class ReduceAction443
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa TKwdo
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(77), node_list)
+                                       p.push(p.go_to(95), node_list)
        end
 init do end
 end
-private class ReduceAction444
+private class ReduceAction587
 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 tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode5
-                                       )
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(78), node_list)
+                                       p.push(p.go_to(96), node_list)
        end
 init do end
 end
-private class ReduceAction445
+private class ReduceAction588
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14781,101 +20969,85 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(79), node_list)
-       end
-init do end
-end
-private class ReduceAction446
-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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        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(
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tkwdonode3,
-                                               pexprnode4
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(80), node_list)
-       end
-init do end
-end
-private class ReduceAction447
-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(81), node_list)
+                                       p.push(p.go_to(96), node_list)
        end
 init do end
 end
-private class ReduceAction448
+private class ReduceAction589
 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
+                                       var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       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
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(81), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(96), node_list)
        end
 init do end
 end
-private class ReduceAction449
+private class ReduceAction590
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14884,11 +21056,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(97), node_list)
        end
 init do end
 end
-private class ReduceAction450
+private class ReduceAction591
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14925,11 +21097,11 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(82), node_list)
+                                       p.push(p.go_to(97), node_list)
        end
 init do end
 end
-private class ReduceAction451
+private class ReduceAction592
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14938,11 +21110,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(98), node_list)
        end
 init do end
 end
-private class ReduceAction452
+private class ReduceAction593
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14960,11 +21132,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(98), node_list)
        end
 init do end
 end
-private class ReduceAction453
+private class ReduceAction594
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14982,11 +21154,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(83), node_list)
+                                       p.push(p.go_to(98), node_list)
        end
 init do end
 end
-private class ReduceAction454
+private class ReduceAction595
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -14995,11 +21167,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(99), node_list)
        end
 init do end
 end
-private class ReduceAction455
+private class ReduceAction596
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15016,11 +21188,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(84), node_list)
+                                       p.push(p.go_to(99), node_list)
        end
 init do end
 end
-private class ReduceAction456
+private class ReduceAction597
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15029,11 +21201,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction457
+private class ReduceAction598
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15051,11 +21223,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction458
+private class ReduceAction599
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15073,11 +21245,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction459
+private class ReduceAction600
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15095,11 +21267,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction460
+private class ReduceAction601
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15117,11 +21289,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction461
+private class ReduceAction602
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15139,11 +21311,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction462
+private class ReduceAction603
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15161,11 +21333,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction463
+private class ReduceAction604
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15183,11 +21355,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction464
+private class ReduceAction605
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15205,11 +21377,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction465
+private class ReduceAction606
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15227,11 +21399,11 @@ special ReduceAction
                                                ptypenode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(85), node_list)
+                                       p.push(p.go_to(100), node_list)
        end
 init do end
 end
-private class ReduceAction466
+private class ReduceAction607
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15240,11 +21412,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(86), node_list)
+                                       p.push(p.go_to(101), node_list)
        end
 init do end
 end
-private class ReduceAction467
+private class ReduceAction608
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15262,11 +21434,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(86), node_list)
+                                       p.push(p.go_to(101), node_list)
        end
 init do end
 end
-private class ReduceAction468
+private class ReduceAction609
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15284,11 +21456,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(86), node_list)
+                                       p.push(p.go_to(101), node_list)
        end
 init do end
 end
-private class ReduceAction469
+private class ReduceAction610
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15297,11 +21469,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(102), node_list)
        end
 init do end
 end
-private class ReduceAction470
+private class ReduceAction611
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15319,11 +21491,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(102), node_list)
        end
 init do end
 end
-private class ReduceAction471
+private class ReduceAction612
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15341,11 +21513,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(102), node_list)
        end
 init do end
 end
-private class ReduceAction472
+private class ReduceAction613
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15363,11 +21535,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(87), node_list)
+                                       p.push(p.go_to(102), node_list)
        end
 init do end
 end
-private class ReduceAction473
+private class ReduceAction614
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15376,11 +21548,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction474
+private class ReduceAction615
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15397,11 +21569,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction475
+private class ReduceAction616
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15418,11 +21590,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(88), node_list)
+                                       p.push(p.go_to(103), node_list)
        end
 init do end
 end
-private class ReduceAction476
+private class ReduceAction617
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15431,11 +21603,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(89), node_list)
+                                       p.push(p.go_to(104), node_list)
        end
 init do end
 end
-private class ReduceAction477
+private class ReduceAction618
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15465,11 +21637,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(89), node_list)
+                                       p.push(p.go_to(104), node_list)
        end
 init do end
 end
-private class ReduceAction478
+private class ReduceAction619
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15487,11 +21659,11 @@ special ReduceAction
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction479
+private class ReduceAction620
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15506,11 +21678,11 @@ special ReduceAction
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction480
+private class ReduceAction621
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15521,6 +21693,7 @@ special ReduceAction
                                        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
                                        var tidnode3 = nodearraylist4
@@ -15537,14 +21710,15 @@ special ReduceAction
                                        var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction481
+private class ReduceAction622
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15552,6 +21726,7 @@ special ReduceAction
                                        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 tidnode3 = nodearraylist1
@@ -15568,14 +21743,15 @@ special ReduceAction
                                        var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction482
+private class ReduceAction623
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15600,11 +21776,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction483
+private class ReduceAction624
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15632,11 +21808,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction484
+private class ReduceAction625
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15666,11 +21842,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction485
+private class ReduceAction626
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15697,11 +21873,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction486
+private class ReduceAction627
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15736,11 +21912,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction487
+private class ReduceAction628
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15752,11 +21928,11 @@ special ReduceAction
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction488
+private class ReduceAction629
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15768,11 +21944,11 @@ special ReduceAction
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction489
+private class ReduceAction630
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15784,11 +21960,11 @@ special ReduceAction
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction490
+private class ReduceAction631
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15800,11 +21976,11 @@ special ReduceAction
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction491
+private class ReduceAction632
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15816,11 +21992,11 @@ special ReduceAction
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction492
+private class ReduceAction633
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15832,11 +22008,11 @@ special ReduceAction
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction493
+private class ReduceAction634
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15848,11 +22024,11 @@ special ReduceAction
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction494
+private class ReduceAction635
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15864,11 +22040,11 @@ special ReduceAction
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction495
+private class ReduceAction636
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15877,11 +22053,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction496
+private class ReduceAction637
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15908,29 +22084,113 @@ special ReduceAction
                                                ptypenode4
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(90), node_list)
+                                       p.push(p.go_to(105), node_list)
        end
 init do end
 end
-private class ReduceAction497
+private class ReduceAction638
 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
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(106), node_list)
+       end
+init do end
+end
+private class ReduceAction639
+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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(91), node_list)
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(106), node_list)
        end
 init do end
 end
-private class ReduceAction498
+private class ReduceAction640
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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 tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(106), node_list)
+       end
+init do end
+end
+private class ReduceAction641
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15939,11 +22199,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(92), node_list)
+                                       p.push(p.go_to(107), node_list)
        end
 init do end
 end
-private class ReduceAction499
+private class ReduceAction642
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15980,11 +22240,11 @@ special ReduceAction
                                                pexprnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(92), node_list)
+                                       p.push(p.go_to(107), node_list)
        end
 init do end
 end
-private class ReduceAction500
+private class ReduceAction643
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -15993,11 +22253,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction501
+private class ReduceAction644
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16015,11 +22275,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction502
+private class ReduceAction645
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16037,11 +22297,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(93), node_list)
+                                       p.push(p.go_to(108), node_list)
        end
 init do end
 end
-private class ReduceAction503
+private class ReduceAction646
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16050,11 +22310,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
+                                       p.push(p.go_to(109), node_list)
        end
 init do end
 end
-private class ReduceAction504
+private class ReduceAction647
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16071,11 +22331,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(94), node_list)
+                                       p.push(p.go_to(109), node_list)
        end
 init do end
 end
-private class ReduceAction505
+private class ReduceAction648
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16084,11 +22344,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction506
+private class ReduceAction649
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16106,11 +22366,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction507
+private class ReduceAction650
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16128,11 +22388,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction508
+private class ReduceAction651
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16150,11 +22410,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction509
+private class ReduceAction652
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16172,11 +22432,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction510
+private class ReduceAction653
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16194,11 +22454,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction511
+private class ReduceAction654
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16216,11 +22476,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction512
+private class ReduceAction655
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16238,11 +22498,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction513
+private class ReduceAction656
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16260,11 +22520,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction514
+private class ReduceAction657
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16282,11 +22542,11 @@ special ReduceAction
                                                ptypenode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(95), node_list)
+                                       p.push(p.go_to(110), node_list)
        end
 init do end
 end
-private class ReduceAction515
+private class ReduceAction658
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16295,11 +22555,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(96), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction516
+private class ReduceAction659
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16317,11 +22577,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(96), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction517
+private class ReduceAction660
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16339,11 +22599,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(96), node_list)
+                                       p.push(p.go_to(111), node_list)
        end
 init do end
 end
-private class ReduceAction518
+private class ReduceAction661
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16352,11 +22612,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(97), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction519
+private class ReduceAction662
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16374,11 +22634,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(97), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction520
+private class ReduceAction663
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16396,11 +22656,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(97), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction521
+private class ReduceAction664
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16418,11 +22678,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(97), node_list)
+                                       p.push(p.go_to(112), node_list)
        end
 init do end
 end
-private class ReduceAction522
+private class ReduceAction665
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16431,11 +22691,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(98), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction523
+private class ReduceAction666
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16452,11 +22712,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(98), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction524
+private class ReduceAction667
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16473,11 +22733,11 @@ special ReduceAction
                                                pexprnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(98), node_list)
+                                       p.push(p.go_to(113), node_list)
        end
 init do end
 end
-private class ReduceAction525
+private class ReduceAction668
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16486,11 +22746,11 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(99), node_list)
+                                       p.push(p.go_to(114), node_list)
        end
 init do end
 end
-private class ReduceAction526
+private class ReduceAction669
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16520,11 +22780,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(99), node_list)
+                                       p.push(p.go_to(114), node_list)
        end
 init do end
 end
-private class ReduceAction527
+private class ReduceAction670
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16540,11 +22800,11 @@ special ReduceAction
                                                tattridnode3
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction528
+private class ReduceAction671
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16553,6 +22813,7 @@ special ReduceAction
                                        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
                                        var tidnode3 = nodearraylist2
@@ -16569,14 +22830,15 @@ special ReduceAction
                                        var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
-                                               listnode5
+                                               listnode5,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction529
+private class ReduceAction672
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16601,11 +22863,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction530
+private class ReduceAction673
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16633,11 +22895,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction531
+private class ReduceAction674
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16665,11 +22927,11 @@ special ReduceAction
                                                listnode5
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction532
+private class ReduceAction675
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16704,11 +22966,11 @@ special ReduceAction
                                                listnode6
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction533
+private class ReduceAction676
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16720,11 +22982,11 @@ special ReduceAction
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction534
+private class ReduceAction677
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16736,11 +22998,11 @@ special ReduceAction
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction535
+private class ReduceAction678
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16752,11 +23014,11 @@ special ReduceAction
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction536
+private class ReduceAction679
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16768,11 +23030,11 @@ special ReduceAction
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction537
+private class ReduceAction680
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16784,11 +23046,11 @@ special ReduceAction
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
        end
 init do end
 end
-private class ReduceAction538
+private class ReduceAction681
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16800,43 +23062,216 @@ special ReduceAction
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(115), node_list)
+       end
+init do end
+end
+private class ReduceAction682
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa TChar
+                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                               tcharnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(115), node_list)
+       end
+init do end
+end
+private class ReduceAction683
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstringnode2 = nodearraylist1
+                                       assert tstringnode2 isa TString
+                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                               tstringnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(115), node_list)
+       end
+init do end
+end
+private class ReduceAction684
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(115), node_list)
+       end
+init do end
+end
+private class ReduceAction685
+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 pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa TKwas
+                                       var ptypenode4 = nodearraylist8
+                                       assert ptypenode4 isa PType
+                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                               pexprnode2,
+                                               tkwasnode3,
+                                               ptypenode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(115), node_list)
+       end
+init do end
+end
+private class ReduceAction686
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(116), node_list)
+       end
+init do end
+end
+private class ReduceAction687
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var pexprnode1 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(116), node_list)
+       end
+init do end
+end
+private class ReduceAction688
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       assert pexprnode1 isa PExpr
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(117), node_list)
+       end
+init do end
+end
+private class ReduceAction689
+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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa PExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(117), node_list)
        end
 init do end
 end
-private class ReduceAction539
+private class ReduceAction690
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
-                                               tcharnode2
+                                       var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
-       end
-init do end
-end
-private class ReduceAction540
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
-                                               tstringnode2
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(117), node_list)
        end
 init do end
 end
-private class ReduceAction541
+private class ReduceAction691
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16845,42 +23280,57 @@ special ReduceAction
                                        var pexprnode1 = nodearraylist1
                                        assert pexprnode1 isa PExpr
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction542
+private class ReduceAction692
 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 listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa PExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
-                                       var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist5 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist6 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               tkwasnode3,
-                                               ptypenode4
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(100), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction543
+private class ReduceAction693
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16888,26 +23338,42 @@ special ReduceAction
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(101), node_list)
-       end
-init do end
-end
-private class ReduceAction544
-special ReduceAction
-       redef meth action(p: Parser)
-       do
-                                       var node_list: Object = null
-                                       var pexprnode1 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var listnode5 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       )
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa TId
+                                       var listnode4 = nodearraylist2 
+                                       assert listnode4 isa Array[Object]
+                                       if listnode4 != null then
+                                               if listnode5.is_empty then
+                                                       listnode5 = listnode4
+                                               else
+                                                       listnode5.append(listnode4)
+                                               end
+                                       end
+                                       var listnode6 = nodearraylist3 
+                                       assert listnode6 isa Array[Object]
+                                       if listnode6 != null then
+                                               if listnode7.is_empty then
+                                                       listnode7 = listnode6
+                                               else
+                                                       listnode7.append(listnode6)
+                                               end
+                                       end
+                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               listnode5,
+                                               listnode7
                                        )
                                        node_list = pexprnode1
-                                       p.push(p.go_to(101), node_list)
+                                       p.push(p.go_to(118), node_list)
        end
 init do end
 end
-private class ReduceAction545
+private class ReduceAction694
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16920,11 +23386,11 @@ special ReduceAction
                                                listnode2.add(pimportnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(102), node_list)
+                                       p.push(p.go_to(119), node_list)
        end
 init do end
 end
-private class ReduceAction546
+private class ReduceAction695
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16947,11 +23413,11 @@ special ReduceAction
                                                listnode3.add(pimportnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(102), node_list)
+                                       p.push(p.go_to(119), node_list)
        end
 init do end
 end
-private class ReduceAction547
+private class ReduceAction696
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16964,11 +23430,11 @@ special ReduceAction
                                                listnode2.add(pclassdefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(103), node_list)
+                                       p.push(p.go_to(120), node_list)
        end
 init do end
 end
-private class ReduceAction548
+private class ReduceAction697
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -16991,11 +23457,11 @@ special ReduceAction
                                                listnode3.add(pclassdefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(103), node_list)
+                                       p.push(p.go_to(120), node_list)
        end
 init do end
 end
-private class ReduceAction549
+private class ReduceAction698
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17008,11 +23474,11 @@ special ReduceAction
                                                listnode2.add(psuperclassnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(104), node_list)
+                                       p.push(p.go_to(121), node_list)
        end
 init do end
 end
-private class ReduceAction550
+private class ReduceAction699
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17035,11 +23501,11 @@ special ReduceAction
                                                listnode3.add(psuperclassnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(104), node_list)
+                                       p.push(p.go_to(121), node_list)
        end
 init do end
 end
-private class ReduceAction551
+private class ReduceAction700
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17052,11 +23518,11 @@ special ReduceAction
                                                listnode2.add(pformaldefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(122), node_list)
        end
 init do end
 end
-private class ReduceAction552
+private class ReduceAction701
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17079,11 +23545,11 @@ special ReduceAction
                                                listnode3.add(pformaldefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(105), node_list)
+                                       p.push(p.go_to(122), node_list)
        end
 init do end
 end
-private class ReduceAction553
+private class ReduceAction702
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17096,11 +23562,11 @@ special ReduceAction
                                                listnode2.add(ppropdefnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(106), node_list)
+                                       p.push(p.go_to(123), node_list)
        end
 init do end
 end
-private class ReduceAction554
+private class ReduceAction703
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17123,28 +23589,28 @@ special ReduceAction
                                                listnode3.add(ppropdefnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(106), node_list)
+                                       p.push(p.go_to(123), node_list)
        end
 init do end
 end
-private class ReduceAction555
+private class ReduceAction704
 special ReduceAction
        redef meth action(p: Parser)
        do
                                        var node_list: 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 PParam
+                                       if pparamnode1 != null then
+                                               listnode2.add(pparamnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(107), node_list)
+                                       p.push(p.go_to(124), node_list)
        end
 init do end
 end
-private class ReduceAction556
+private class ReduceAction705
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17154,8 +23620,8 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode1 = nodearraylist1 
                                        assert listnode1 isa Array[Object]
-                                       var ppropdefnode2 = nodearraylist2
-                                       assert ppropdefnode2 isa PPropdef
+                                       var pparamnode2 = nodearraylist2
+                                       assert pparamnode2 isa PParam
                                        if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -17163,32 +23629,32 @@ special ReduceAction
                                                        listnode3.append(listnode1)
                                                end
                                        end
-                                       if ppropdefnode2 != null then
-                                               listnode3.add(ppropdefnode2)
+                                       if pparamnode2 != null then
+                                               listnode3.add(pparamnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(107), node_list)
+                                       p.push(p.go_to(124), node_list)
        end
 init do end
 end
-private class ReduceAction557
+private class ReduceAction706
 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)
+                                       var pclosuredeclnode1 = nodearraylist1
+                                       assert pclosuredeclnode1 isa PClosureDecl
+                                       if pclosuredeclnode1 != null then
+                                               listnode2.add(pclosuredeclnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(108), node_list)
+                                       p.push(p.go_to(125), node_list)
        end
 init do end
 end
-private class ReduceAction558
+private class ReduceAction707
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17198,8 +23664,8 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode1 = nodearraylist1 
                                        assert listnode1 isa Array[Object]
-                                       var pparamnode2 = nodearraylist2
-                                       assert pparamnode2 isa PParam
+                                       var pclosuredeclnode2 = nodearraylist2
+                                       assert pclosuredeclnode2 isa PClosureDecl
                                        if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
@@ -17207,15 +23673,15 @@ special ReduceAction
                                                        listnode3.append(listnode1)
                                                end
                                        end
-                                       if pparamnode2 != null then
-                                               listnode3.add(pparamnode2)
+                                       if pclosuredeclnode2 != null then
+                                               listnode3.add(pclosuredeclnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(108), node_list)
+                                       p.push(p.go_to(125), node_list)
        end
 init do end
 end
-private class ReduceAction559
+private class ReduceAction708
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17228,11 +23694,11 @@ special ReduceAction
                                                listnode2.add(ptypenode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(109), node_list)
+                                       p.push(p.go_to(126), node_list)
        end
 init do end
 end
-private class ReduceAction560
+private class ReduceAction709
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17255,11 +23721,11 @@ special ReduceAction
                                                listnode3.add(ptypenode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(109), node_list)
+                                       p.push(p.go_to(126), node_list)
        end
 init do end
 end
-private class ReduceAction561
+private class ReduceAction710
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17272,11 +23738,11 @@ special ReduceAction
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(127), node_list)
        end
 init do end
 end
-private class ReduceAction562
+private class ReduceAction711
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17299,11 +23765,11 @@ special ReduceAction
                                                listnode3.add(pexprnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(110), node_list)
+                                       p.push(p.go_to(127), node_list)
        end
 init do end
 end
-private class ReduceAction563
+private class ReduceAction712
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17320,11 +23786,11 @@ special ReduceAction
                                                end
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(128), node_list)
        end
 init do end
 end
-private class ReduceAction564
+private class ReduceAction713
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17351,11 +23817,11 @@ special ReduceAction
                                                end
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(111), node_list)
+                                       p.push(p.go_to(128), node_list)
        end
 init do end
 end
-private class ReduceAction565
+private class ReduceAction714
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17368,11 +23834,11 @@ special ReduceAction
                                                listnode2.add(pexprnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(129), node_list)
        end
 init do end
 end
-private class ReduceAction566
+private class ReduceAction715
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17395,11 +23861,11 @@ special ReduceAction
                                                listnode3.add(pexprnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(112), node_list)
+                                       p.push(p.go_to(129), node_list)
        end
 init do end
 end
-private class ReduceAction567
+private class ReduceAction716
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17412,11 +23878,11 @@ special ReduceAction
                                                listnode2.add(tidnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(130), node_list)
        end
 init do end
 end
-private class ReduceAction568
+private class ReduceAction717
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17439,11 +23905,11 @@ special ReduceAction
                                                listnode3.add(tidnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(113), node_list)
+                                       p.push(p.go_to(130), node_list)
        end
 init do end
 end
-private class ReduceAction569
+private class ReduceAction718
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17456,11 +23922,11 @@ special ReduceAction
                                                listnode2.add(tcommentnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(114), node_list)
+                                       p.push(p.go_to(131), node_list)
        end
 init do end
 end
-private class ReduceAction570
+private class ReduceAction719
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17483,11 +23949,11 @@ special ReduceAction
                                                listnode3.add(tcommentnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(114), node_list)
+                                       p.push(p.go_to(131), node_list)
        end
 init do end
 end
-private class ReduceAction571
+private class ReduceAction720
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17500,11 +23966,11 @@ special ReduceAction
                                                listnode2.add(teolnode1)
                                        end
                                        node_list = listnode2
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(132), node_list)
        end
 init do end
 end
-private class ReduceAction572
+private class ReduceAction721
 special ReduceAction
        redef meth action(p: Parser)
        do
@@ -17527,7 +23993,51 @@ special ReduceAction
                                                listnode3.add(teolnode2)
                                        end
                                        node_list = listnode3
-                                       p.push(p.go_to(115), node_list)
+                                       p.push(p.go_to(132), node_list)
+       end
+init do end
+end
+private class ReduceAction722
+special ReduceAction
+       redef meth action(p: Parser)
+       do
+                                       var node_list: 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)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(133), node_list)
+       end
+init do end
+end
+private class ReduceAction723
+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 ppropdefnode2 = nodearraylist2
+                                       assert ppropdefnode2 isa 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