parser: compute location for all nodes
[nit.git] / src / parser / parser_prod.nit
index d6b9606..61d6f95 100644 (file)
@@ -1,25 +1,25 @@
 # Production AST nodes full definition.
-# This file was generated by SableCC (http://www.sablecc.org/). 
+# This file was generated by SableCC (http://www.sablecc.org/).
 package parser_prod
 
 import lexer
 intrude import parser_nodes
 
-redef class PNode
+redef class ANode
        # Parent of the node in the AST
-       readable writable var _parent: nullable PNode
+       readable writable var _parent: nullable ANode
 
        # Remove a child from the AST
-       fun remove_child(child: PNode)
+       fun remove_child(child: ANode)
        do
                replace_child(child, null)
        end
 
        # Replace a child with an other node in the AST
-       fun replace_child(old_child: PNode, new_child: nullable PNode) is abstract
+       fun replace_child(old_child: ANode, new_child: nullable ANode) is abstract
 
        # Replace itself with an other node in the AST
-       fun replace_with(node: PNode)
+       fun replace_with(node: ANode)
        do
                if (_parent != null) then
                        _parent.replace_child(self, node)
@@ -33,37 +33,19 @@ redef class PNode
        # Visit all nodes in reverse order.
        # Thus, call "v.visit(e)" for each node e starting from the last child
        fun visit_all_reverse(v: Visitor) is abstract
-
-       # Debug method: output a message prefixed with the location.
-       fun printl(str: String)
-       do
-               if location == null then
-                       print("???: {str}\n")
-               else
-                       print("{location}: {str}\n")
-               end
-       end
 end
 
 redef class Token
        redef fun visit_all(v: Visitor) do end
        redef fun visit_all_reverse(v: Visitor) do end
-       redef fun replace_child(old_child: PNode, new_child: nullable PNode) do end
+       redef fun replace_child(old_child: ANode, new_child: nullable ANode) do end
 end
 
 redef class Prod
-       # The first token of the production node
-       readable writable var _first_token: nullable Token
-
-       # The last token of the production node
-       readable writable var _last_token: nullable Token
-
-       redef fun replace_with(n: PNode)
+       redef fun replace_with(n: ANode)
         do
                 super
                 assert n isa Prod
-                n.first_token = first_token
-                n.last_token = last_token
                 n.location = location
         end
 end
@@ -72,12 +54,12 @@ end
 class Visitor
        # What the visitor do when a node is visited
         # Concrete visitors should redefine this method.
-        protected fun visit(e: nullable PNode) is abstract
+        protected fun visit(e: nullable ANode) is abstract
 
         # Ask the visitor to visit a given node.
         # Usually automatically called by visit_all* methods.
        # This methos should not be redefined
-        fun enter_visit(e: nullable PNode)
+        fun enter_visit(e: nullable ANode)
        do
                var old = _current_node
                _current_node = e
@@ -86,7 +68,7 @@ class Visitor
        end
 
        # The current visited node
-       readable var _current_node: nullable PNode = null
+       readable var _current_node: nullable ANode = null
 end
 
 redef class AModule
@@ -101,9 +83,9 @@ redef class AModule
     private init empty_init do end
 
     init init_amodule (
-            n_packagedecl: nullable PPackagedecl ,
-            n_imports: Collection[Object] , # Should be Collection[PImport]
-            n_classdefs: Collection[Object]  # Should be Collection[PClassdef]
+            n_packagedecl: nullable APackagedecl,
+            n_imports: Collection[Object], # Should be Collection[AImport]
+            n_classdefs: Collection[Object] # Should be Collection[AClassdef]
     )
     do
         empty_init
@@ -112,23 +94,23 @@ redef class AModule
                n_packagedecl.parent = self
        end
        for n in n_imports do
-               assert n isa PImport
+               assert n isa AImport
                _n_imports.add(n)
                n.parent = self
        end
        for n in n_classdefs do
-               assert n isa PClassdef
+               assert n isa AClassdef
                _n_classdefs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_packagedecl == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PPackagedecl
+               assert new_child isa APackagedecl
                 _n_packagedecl = new_child
            else
                _n_packagedecl = null
@@ -138,7 +120,7 @@ redef class AModule
         for i in [0.._n_imports.length[ do
             if _n_imports[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PImport
+                   assert new_child isa AImport
                     _n_imports[i] = new_child
                     new_child.parent = self
                 else
@@ -150,7 +132,7 @@ redef class AModule
         for i in [0.._n_classdefs.length[ do
             if _n_classdefs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PClassdef
+                   assert new_child isa AClassdef
                     _n_classdefs[i] = new_child
                     new_child.parent = self
                 else
@@ -217,9 +199,9 @@ redef class APackagedecl
     private init empty_init do end
 
     init init_apackagedecl (
-            n_doc: nullable PDoc ,
-            n_kwpackage: nullable TKwpackage ,
-            n_id: nullable TId 
+            n_doc: nullable ADoc,
+            n_kwpackage: nullable TKwpackage,
+            n_id: nullable TId
     )
     do
         empty_init
@@ -233,12 +215,12 @@ redef class APackagedecl
        n_id.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -285,7 +267,7 @@ redef class APackagedecl
         v.enter_visit(_n_id)
     end
 end
-redef class AImport
+redef class AStdImport
     redef fun n_visibility=(n)
     do
         _n_visibility = n
@@ -304,10 +286,10 @@ redef class AImport
 
     private init empty_init do end
 
-    init init_aimport (
-            n_visibility: nullable PVisibility ,
-            n_kwimport: nullable TKwimport ,
-            n_id: nullable TId 
+    init init_astdimport (
+            n_visibility: nullable AVisibility,
+            n_kwimport: nullable TKwimport,
+            n_id: nullable TId
     )
     do
         empty_init
@@ -319,12 +301,12 @@ redef class AImport
        n_id.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -387,9 +369,9 @@ redef class ANoImport
     private init empty_init do end
 
     init init_anoimport (
-            n_visibility: nullable PVisibility ,
-            n_kwimport: nullable TKwimport ,
-            n_kwend: nullable TKwend 
+            n_visibility: nullable AVisibility,
+            n_kwimport: nullable TKwimport,
+            n_kwend: nullable TKwend
     )
     do
         empty_init
@@ -401,12 +383,12 @@ redef class ANoImport
        n_kwend.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -458,7 +440,7 @@ redef class APublicVisibility
         empty_init
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
     end
 
@@ -480,7 +462,7 @@ redef class APrivateVisibility
     private init empty_init do end
 
     init init_aprivatevisibility (
-            n_kwprivate: nullable TKwprivate 
+            n_kwprivate: nullable TKwprivate
     )
     do
         empty_init
@@ -488,7 +470,7 @@ redef class APrivateVisibility
        n_kwprivate.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwprivate == old_child then
             if new_child != null then
@@ -522,7 +504,7 @@ redef class AProtectedVisibility
     private init empty_init do end
 
     init init_aprotectedvisibility (
-            n_kwprotected: nullable TKwprotected 
+            n_kwprotected: nullable TKwprotected
     )
     do
         empty_init
@@ -530,7 +512,7 @@ redef class AProtectedVisibility
        n_kwprotected.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwprotected == old_child then
             if new_child != null then
@@ -564,7 +546,7 @@ redef class AIntrudeVisibility
     private init empty_init do end
 
     init init_aintrudevisibility (
-            n_kwintrude: nullable TKwintrude 
+            n_kwintrude: nullable TKwintrude
     )
     do
         empty_init
@@ -572,7 +554,7 @@ redef class AIntrudeVisibility
        n_kwintrude.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwintrude == old_child then
             if new_child != null then
@@ -596,7 +578,7 @@ redef class AIntrudeVisibility
         v.enter_visit(_n_kwintrude)
     end
 end
-redef class AClassdef
+redef class AStdClassdef
     redef fun n_doc=(n)
     do
         _n_doc = n
@@ -631,15 +613,15 @@ redef class AClassdef
 
     private init empty_init do end
 
-    init init_aclassdef (
-            n_doc: nullable PDoc ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_classkind: nullable PClasskind ,
-            n_id: nullable TClassid ,
-            n_formaldefs: Collection[Object] , # Should be Collection[PFormaldef]
-            n_superclasses: Collection[Object] , # Should be Collection[PSuperclass]
-            n_propdefs: Collection[Object]  # Should be Collection[PPropdef]
+    init init_astdclassdef (
+            n_doc: nullable ADoc,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_classkind: nullable AClasskind,
+            n_id: nullable TClassid,
+            n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
+            n_superclasses: Collection[Object], # Should be Collection[ASuperclass]
+            n_propdefs: Collection[Object] # Should be Collection[APropdef]
     )
     do
         empty_init
@@ -660,28 +642,28 @@ redef class AClassdef
                n_id.parent = self
        end
        for n in n_formaldefs do
-               assert n isa PFormaldef
+               assert n isa AFormaldef
                _n_formaldefs.add(n)
                n.parent = self
        end
        for n in n_superclasses do
-               assert n isa PSuperclass
+               assert n isa ASuperclass
                _n_superclasses.add(n)
                n.parent = self
        end
        for n in n_propdefs do
-               assert n isa PPropdef
+               assert n isa APropdef
                _n_propdefs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -701,7 +683,7 @@ redef class AClassdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -711,7 +693,7 @@ redef class AClassdef
         if _n_classkind == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PClasskind
+               assert new_child isa AClasskind
                 _n_classkind = new_child
            else
                abort
@@ -731,7 +713,7 @@ redef class AClassdef
         for i in [0.._n_formaldefs.length[ do
             if _n_formaldefs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PFormaldef
+                   assert new_child isa AFormaldef
                     _n_formaldefs[i] = new_child
                     new_child.parent = self
                 else
@@ -743,7 +725,7 @@ redef class AClassdef
         for i in [0.._n_superclasses.length[ do
             if _n_superclasses[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PSuperclass
+                   assert new_child isa ASuperclass
                     _n_superclasses[i] = new_child
                     new_child.parent = self
                 else
@@ -755,7 +737,7 @@ redef class AClassdef
         for i in [0.._n_propdefs.length[ do
             if _n_propdefs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PPropdef
+                   assert new_child isa APropdef
                     _n_propdefs[i] = new_child
                     new_child.parent = self
                 else
@@ -831,23 +813,23 @@ redef class ATopClassdef
     private init empty_init do end
 
     init init_atopclassdef (
-            n_propdefs: Collection[Object]  # Should be Collection[PPropdef]
+            n_propdefs: Collection[Object] # Should be Collection[APropdef]
     )
     do
         empty_init
        for n in n_propdefs do
-               assert n isa PPropdef
+               assert n isa APropdef
                _n_propdefs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         for i in [0.._n_propdefs.length[ do
             if _n_propdefs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PPropdef
+                   assert new_child isa APropdef
                     _n_propdefs[i] = new_child
                     new_child.parent = self
                 else
@@ -881,23 +863,23 @@ redef class AMainClassdef
     private init empty_init do end
 
     init init_amainclassdef (
-            n_propdefs: Collection[Object]  # Should be Collection[PPropdef]
+            n_propdefs: Collection[Object] # Should be Collection[APropdef]
     )
     do
         empty_init
        for n in n_propdefs do
-               assert n isa PPropdef
+               assert n isa APropdef
                _n_propdefs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         for i in [0.._n_propdefs.length[ do
             if _n_propdefs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PPropdef
+                   assert new_child isa APropdef
                     _n_propdefs[i] = new_child
                     new_child.parent = self
                 else
@@ -936,7 +918,7 @@ redef class AConcreteClasskind
     private init empty_init do end
 
     init init_aconcreteclasskind (
-            n_kwclass: nullable TKwclass 
+            n_kwclass: nullable TKwclass
     )
     do
         empty_init
@@ -944,7 +926,7 @@ redef class AConcreteClasskind
        n_kwclass.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwclass == old_child then
             if new_child != null then
@@ -983,8 +965,8 @@ redef class AAbstractClasskind
     private init empty_init do end
 
     init init_aabstractclasskind (
-            n_kwabstract: nullable TKwabstract ,
-            n_kwclass: nullable TKwclass 
+            n_kwabstract: nullable TKwabstract,
+            n_kwclass: nullable TKwclass
     )
     do
         empty_init
@@ -994,7 +976,7 @@ redef class AAbstractClasskind
        n_kwclass.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwabstract == old_child then
             if new_child != null then
@@ -1040,7 +1022,7 @@ redef class AInterfaceClasskind
     private init empty_init do end
 
     init init_ainterfaceclasskind (
-            n_kwinterface: nullable TKwinterface 
+            n_kwinterface: nullable TKwinterface
     )
     do
         empty_init
@@ -1048,7 +1030,7 @@ redef class AInterfaceClasskind
        n_kwinterface.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwinterface == old_child then
             if new_child != null then
@@ -1082,7 +1064,7 @@ redef class AUniversalClasskind
     private init empty_init do end
 
     init init_auniversalclasskind (
-            n_kwuniversal: nullable TKwuniversal 
+            n_kwuniversal: nullable TKwuniversal
     )
     do
         empty_init
@@ -1090,7 +1072,7 @@ redef class AUniversalClasskind
        n_kwuniversal.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwuniversal == old_child then
             if new_child != null then
@@ -1131,8 +1113,8 @@ redef class AFormaldef
     private init empty_init do end
 
     init init_aformaldef (
-            n_id: nullable TClassid ,
-            n_type: nullable PType 
+            n_id: nullable TClassid,
+            n_type: nullable AType
     )
     do
         empty_init
@@ -1144,7 +1126,7 @@ redef class AFormaldef
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_id == old_child then
             if new_child != null then
@@ -1159,7 +1141,7 @@ redef class AFormaldef
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                _n_type = null
@@ -1199,8 +1181,8 @@ redef class ASuperclass
     private init empty_init do end
 
     init init_asuperclass (
-            n_kwspecial: nullable TKwspecial ,
-            n_type: nullable PType 
+            n_kwspecial: nullable TKwspecial,
+            n_type: nullable AType
     )
     do
         empty_init
@@ -1210,7 +1192,7 @@ redef class ASuperclass
        n_type.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwspecial == old_child then
             if new_child != null then
@@ -1225,7 +1207,7 @@ redef class ASuperclass
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                abort
@@ -1317,16 +1299,16 @@ redef class AAttrPropdef
     private init empty_init do end
 
     init init_aattrpropdef (
-            n_doc: nullable PDoc ,
-            n_readable: nullable PAble ,
-            n_writable: nullable PAble ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_kwattr: nullable TKwattr ,
-            n_kwvar: nullable TKwvar ,
-            n_id: nullable TAttrid ,
-            n_type: nullable PType ,
-            n_expr: nullable PExpr 
+            n_doc: nullable ADoc,
+            n_readable: nullable AAble,
+            n_writable: nullable AAble,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_kwattr: nullable TKwattr,
+            n_kwvar: nullable TKwvar,
+            n_id: nullable TAttrid,
+            n_type: nullable AType,
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -1368,12 +1350,12 @@ redef class AAttrPropdef
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -1383,7 +1365,7 @@ redef class AAttrPropdef
         if _n_readable == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PAble
+               assert new_child isa AAble
                 _n_readable = new_child
            else
                _n_readable = null
@@ -1393,7 +1375,7 @@ redef class AAttrPropdef
         if _n_writable == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PAble
+               assert new_child isa AAble
                 _n_writable = new_child
            else
                _n_writable = null
@@ -1413,7 +1395,7 @@ redef class AAttrPropdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -1453,7 +1435,7 @@ redef class AAttrPropdef
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                _n_type = null
@@ -1463,7 +1445,7 @@ redef class AAttrPropdef
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                _n_expr = null
@@ -1566,11 +1548,11 @@ redef class AMethPropdef
     private init empty_init do end
 
     init init_amethpropdef (
-            n_doc: nullable PDoc ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature 
+            n_doc: nullable ADoc,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_methid: nullable AMethid,
+            n_signature: nullable ASignature
     )
     do
         empty_init
@@ -1590,12 +1572,12 @@ redef class AMethPropdef
        n_signature.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -1615,7 +1597,7 @@ redef class AMethPropdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -1625,7 +1607,7 @@ redef class AMethPropdef
         if _n_methid == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PMethid
+               assert new_child isa AMethid
                 _n_methid = new_child
            else
                abort
@@ -1635,7 +1617,7 @@ redef class AMethPropdef
         if _n_signature == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PSignature
+               assert new_child isa ASignature
                 _n_signature = new_child
            else
                abort
@@ -1709,12 +1691,12 @@ redef class ADeferredMethPropdef
     private init empty_init do end
 
     init init_adeferredmethpropdef (
-            n_doc: nullable PDoc ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_kwmeth: nullable TKwmeth ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature 
+            n_doc: nullable ADoc,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_kwmeth: nullable TKwmeth,
+            n_methid: nullable AMethid,
+            n_signature: nullable ASignature
     )
     do
         empty_init
@@ -1736,12 +1718,12 @@ redef class ADeferredMethPropdef
        n_signature.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -1761,7 +1743,7 @@ redef class ADeferredMethPropdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -1781,7 +1763,7 @@ redef class ADeferredMethPropdef
         if _n_methid == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PMethid
+               assert new_child isa AMethid
                 _n_methid = new_child
            else
                abort
@@ -1791,7 +1773,7 @@ redef class ADeferredMethPropdef
         if _n_signature == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PSignature
+               assert new_child isa ASignature
                 _n_signature = new_child
            else
                abort
@@ -1867,12 +1849,12 @@ redef class AInternMethPropdef
     private init empty_init do end
 
     init init_ainternmethpropdef (
-            n_doc: nullable PDoc ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_kwmeth: nullable TKwmeth ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature 
+            n_doc: nullable ADoc,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_kwmeth: nullable TKwmeth,
+            n_methid: nullable AMethid,
+            n_signature: nullable ASignature
     )
     do
         empty_init
@@ -1894,12 +1876,12 @@ redef class AInternMethPropdef
        n_signature.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -1919,7 +1901,7 @@ redef class AInternMethPropdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -1939,7 +1921,7 @@ redef class AInternMethPropdef
         if _n_methid == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PMethid
+               assert new_child isa AMethid
                 _n_methid = new_child
            else
                abort
@@ -1949,7 +1931,7 @@ redef class AInternMethPropdef
         if _n_signature == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PSignature
+               assert new_child isa ASignature
                 _n_signature = new_child
            else
                abort
@@ -2032,13 +2014,13 @@ redef class AExternMethPropdef
     private init empty_init do end
 
     init init_aexternmethpropdef (
-            n_doc: nullable PDoc ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_kwmeth: nullable TKwmeth ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature ,
-            n_extern: nullable TString 
+            n_doc: nullable ADoc,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_kwmeth: nullable TKwmeth,
+            n_methid: nullable AMethid,
+            n_signature: nullable ASignature,
+            n_extern: nullable TString
     )
     do
         empty_init
@@ -2064,12 +2046,12 @@ redef class AExternMethPropdef
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -2089,7 +2071,7 @@ redef class AExternMethPropdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -2109,7 +2091,7 @@ redef class AExternMethPropdef
         if _n_methid == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PMethid
+               assert new_child isa AMethid
                 _n_methid = new_child
            else
                abort
@@ -2119,7 +2101,7 @@ redef class AExternMethPropdef
         if _n_signature == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PSignature
+               assert new_child isa ASignature
                 _n_signature = new_child
            else
                abort
@@ -2218,13 +2200,13 @@ redef class AConcreteMethPropdef
     private init empty_init do end
 
     init init_aconcretemethpropdef (
-            n_doc: nullable PDoc ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_kwmeth: nullable TKwmeth ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature ,
-            n_block: nullable PExpr 
+            n_doc: nullable ADoc,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_kwmeth: nullable TKwmeth,
+            n_methid: nullable AMethid,
+            n_signature: nullable ASignature,
+            n_block: nullable AExpr
     )
     do
         empty_init
@@ -2250,12 +2232,12 @@ redef class AConcreteMethPropdef
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -2275,7 +2257,7 @@ redef class AConcreteMethPropdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -2295,7 +2277,7 @@ redef class AConcreteMethPropdef
         if _n_methid == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PMethid
+               assert new_child isa AMethid
                 _n_methid = new_child
            else
                abort
@@ -2305,7 +2287,7 @@ redef class AConcreteMethPropdef
         if _n_signature == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PSignature
+               assert new_child isa ASignature
                 _n_signature = new_child
            else
                abort
@@ -2315,7 +2297,7 @@ redef class AConcreteMethPropdef
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_block = new_child
            else
                _n_block = null
@@ -2406,13 +2388,13 @@ redef class AConcreteInitPropdef
     private init empty_init do end
 
     init init_aconcreteinitpropdef (
-            n_doc: nullable PDoc ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_kwinit: nullable TKwinit ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature ,
-            n_block: nullable PExpr 
+            n_doc: nullable ADoc,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_kwinit: nullable TKwinit,
+            n_methid: nullable AMethid,
+            n_signature: nullable ASignature,
+            n_block: nullable AExpr
     )
     do
         empty_init
@@ -2440,12 +2422,12 @@ redef class AConcreteInitPropdef
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -2465,7 +2447,7 @@ redef class AConcreteInitPropdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -2485,7 +2467,7 @@ redef class AConcreteInitPropdef
         if _n_methid == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PMethid
+               assert new_child isa AMethid
                 _n_methid = new_child
            else
                _n_methid = null
@@ -2495,7 +2477,7 @@ redef class AConcreteInitPropdef
         if _n_signature == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PSignature
+               assert new_child isa ASignature
                 _n_signature = new_child
            else
                abort
@@ -2505,7 +2487,7 @@ redef class AConcreteInitPropdef
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_block = new_child
            else
                _n_block = null
@@ -2571,8 +2553,8 @@ redef class AMainMethPropdef
     private init empty_init do end
 
     init init_amainmethpropdef (
-            n_kwredef: nullable TKwredef ,
-            n_block: nullable PExpr 
+            n_kwredef: nullable TKwredef,
+            n_block: nullable AExpr
     )
     do
         empty_init
@@ -2586,7 +2568,7 @@ redef class AMainMethPropdef
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwredef == old_child then
             if new_child != null then
@@ -2601,7 +2583,7 @@ redef class AMainMethPropdef
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_block = new_child
            else
                _n_block = null
@@ -2669,12 +2651,12 @@ redef class ATypePropdef
     private init empty_init do end
 
     init init_atypepropdef (
-            n_doc: nullable PDoc ,
-            n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_kwtype: nullable TKwtype ,
-            n_id: nullable TClassid ,
-            n_type: nullable PType 
+            n_doc: nullable ADoc,
+            n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
+            n_kwtype: nullable TKwtype,
+            n_id: nullable TClassid,
+            n_type: nullable AType
     )
     do
         empty_init
@@ -2696,12 +2678,12 @@ redef class ATypePropdef
        n_type.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PDoc
+               assert new_child isa ADoc
                 _n_doc = new_child
            else
                _n_doc = null
@@ -2721,7 +2703,7 @@ redef class ATypePropdef
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PVisibility
+               assert new_child isa AVisibility
                 _n_visibility = new_child
            else
                abort
@@ -2751,7 +2733,7 @@ redef class ATypePropdef
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                abort
@@ -2805,8 +2787,8 @@ redef class AReadAble
     private init empty_init do end
 
     init init_areadable (
-            n_kwredef: nullable TKwredef ,
-            n_kwreadable: nullable TKwreadable 
+            n_kwredef: nullable TKwredef,
+            n_kwreadable: nullable TKwreadable
     )
     do
         empty_init
@@ -2818,7 +2800,7 @@ redef class AReadAble
        n_kwreadable.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwredef == old_child then
             if new_child != null then
@@ -2875,8 +2857,8 @@ redef class AWriteAble
     private init empty_init do end
 
     init init_awriteable (
-            n_kwredef: nullable TKwredef ,
-            n_kwwritable: nullable TKwwritable 
+            n_kwredef: nullable TKwredef,
+            n_kwwritable: nullable TKwwritable
     )
     do
         empty_init
@@ -2888,7 +2870,7 @@ redef class AWriteAble
        n_kwwritable.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwredef == old_child then
             if new_child != null then
@@ -2938,7 +2920,7 @@ redef class AIdMethid
     private init empty_init do end
 
     init init_aidmethid (
-            n_id: nullable TId 
+            n_id: nullable TId
     )
     do
         empty_init
@@ -2946,7 +2928,7 @@ redef class AIdMethid
        n_id.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_id == old_child then
             if new_child != null then
@@ -2980,7 +2962,7 @@ redef class APlusMethid
     private init empty_init do end
 
     init init_aplusmethid (
-            n_plus: nullable TPlus 
+            n_plus: nullable TPlus
     )
     do
         empty_init
@@ -2988,7 +2970,7 @@ redef class APlusMethid
        n_plus.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_plus == old_child then
             if new_child != null then
@@ -3022,7 +3004,7 @@ redef class AMinusMethid
     private init empty_init do end
 
     init init_aminusmethid (
-            n_minus: nullable TMinus 
+            n_minus: nullable TMinus
     )
     do
         empty_init
@@ -3030,7 +3012,7 @@ redef class AMinusMethid
        n_minus.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_minus == old_child then
             if new_child != null then
@@ -3064,7 +3046,7 @@ redef class AStarMethid
     private init empty_init do end
 
     init init_astarmethid (
-            n_star: nullable TStar 
+            n_star: nullable TStar
     )
     do
         empty_init
@@ -3072,7 +3054,7 @@ redef class AStarMethid
        n_star.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_star == old_child then
             if new_child != null then
@@ -3106,7 +3088,7 @@ redef class ASlashMethid
     private init empty_init do end
 
     init init_aslashmethid (
-            n_slash: nullable TSlash 
+            n_slash: nullable TSlash
     )
     do
         empty_init
@@ -3114,7 +3096,7 @@ redef class ASlashMethid
        n_slash.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_slash == old_child then
             if new_child != null then
@@ -3148,7 +3130,7 @@ redef class APercentMethid
     private init empty_init do end
 
     init init_apercentmethid (
-            n_percent: nullable TPercent 
+            n_percent: nullable TPercent
     )
     do
         empty_init
@@ -3156,7 +3138,7 @@ redef class APercentMethid
        n_percent.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_percent == old_child then
             if new_child != null then
@@ -3190,7 +3172,7 @@ redef class AEqMethid
     private init empty_init do end
 
     init init_aeqmethid (
-            n_eq: nullable TEq 
+            n_eq: nullable TEq
     )
     do
         empty_init
@@ -3198,7 +3180,7 @@ redef class AEqMethid
        n_eq.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_eq == old_child then
             if new_child != null then
@@ -3232,7 +3214,7 @@ redef class ANeMethid
     private init empty_init do end
 
     init init_anemethid (
-            n_ne: nullable TNe 
+            n_ne: nullable TNe
     )
     do
         empty_init
@@ -3240,7 +3222,7 @@ redef class ANeMethid
        n_ne.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_ne == old_child then
             if new_child != null then
@@ -3274,7 +3256,7 @@ redef class ALeMethid
     private init empty_init do end
 
     init init_alemethid (
-            n_le: nullable TLe 
+            n_le: nullable TLe
     )
     do
         empty_init
@@ -3282,7 +3264,7 @@ redef class ALeMethid
        n_le.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_le == old_child then
             if new_child != null then
@@ -3316,7 +3298,7 @@ redef class AGeMethid
     private init empty_init do end
 
     init init_agemethid (
-            n_ge: nullable TGe 
+            n_ge: nullable TGe
     )
     do
         empty_init
@@ -3324,7 +3306,7 @@ redef class AGeMethid
        n_ge.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_ge == old_child then
             if new_child != null then
@@ -3358,7 +3340,7 @@ redef class ALtMethid
     private init empty_init do end
 
     init init_altmethid (
-            n_lt: nullable TLt 
+            n_lt: nullable TLt
     )
     do
         empty_init
@@ -3366,7 +3348,7 @@ redef class ALtMethid
        n_lt.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_lt == old_child then
             if new_child != null then
@@ -3400,7 +3382,7 @@ redef class AGtMethid
     private init empty_init do end
 
     init init_agtmethid (
-            n_gt: nullable TGt 
+            n_gt: nullable TGt
     )
     do
         empty_init
@@ -3408,7 +3390,7 @@ redef class AGtMethid
        n_gt.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_gt == old_child then
             if new_child != null then
@@ -3447,8 +3429,8 @@ redef class ABraMethid
     private init empty_init do end
 
     init init_abramethid (
-            n_obra: nullable TObra ,
-            n_cbra: nullable TCbra 
+            n_obra: nullable TObra,
+            n_cbra: nullable TCbra
     )
     do
         empty_init
@@ -3458,7 +3440,7 @@ redef class ABraMethid
        n_cbra.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_obra == old_child then
             if new_child != null then
@@ -3504,7 +3486,7 @@ redef class AStarshipMethid
     private init empty_init do end
 
     init init_astarshipmethid (
-            n_starship: nullable TStarship 
+            n_starship: nullable TStarship
     )
     do
         empty_init
@@ -3512,7 +3494,7 @@ redef class AStarshipMethid
        n_starship.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_starship == old_child then
             if new_child != null then
@@ -3551,8 +3533,8 @@ redef class AAssignMethid
     private init empty_init do end
 
     init init_aassignmethid (
-            n_id: nullable TId ,
-            n_assign: nullable TAssign 
+            n_id: nullable TId,
+            n_assign: nullable TAssign
     )
     do
         empty_init
@@ -3562,7 +3544,7 @@ redef class AAssignMethid
        n_assign.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_id == old_child then
             if new_child != null then
@@ -3618,9 +3600,9 @@ redef class ABraassignMethid
     private init empty_init do end
 
     init init_abraassignmethid (
-            n_obra: nullable TObra ,
-            n_cbra: nullable TCbra ,
-            n_assign: nullable TAssign 
+            n_obra: nullable TObra,
+            n_cbra: nullable TCbra,
+            n_assign: nullable TAssign
     )
     do
         empty_init
@@ -3632,7 +3614,7 @@ redef class ABraassignMethid
        n_assign.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_obra == old_child then
             if new_child != null then
@@ -3692,14 +3674,14 @@ redef class ASignature
     private init empty_init do end
 
     init init_asignature (
-            n_params: Collection[Object] , # Should be Collection[PParam]
-            n_type: nullable PType ,
-            n_closure_decls: Collection[Object]  # Should be Collection[PClosureDecl]
+            n_params: Collection[Object], # Should be Collection[AParam]
+            n_type: nullable AType,
+            n_closure_decls: Collection[Object] # Should be Collection[AClosureDecl]
     )
     do
         empty_init
        for n in n_params do
-               assert n isa PParam
+               assert n isa AParam
                _n_params.add(n)
                n.parent = self
        end
@@ -3708,18 +3690,18 @@ redef class ASignature
                n_type.parent = self
        end
        for n in n_closure_decls do
-               assert n isa PClosureDecl
+               assert n isa AClosureDecl
                _n_closure_decls.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         for i in [0.._n_params.length[ do
             if _n_params[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PParam
+                   assert new_child isa AParam
                     _n_params[i] = new_child
                     new_child.parent = self
                 else
@@ -3731,7 +3713,7 @@ redef class ASignature
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                _n_type = null
@@ -3741,7 +3723,7 @@ redef class ASignature
         for i in [0.._n_closure_decls.length[ do
             if _n_closure_decls[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PClosureDecl
+                   assert new_child isa AClosureDecl
                     _n_closure_decls[i] = new_child
                     new_child.parent = self
                 else
@@ -3810,9 +3792,9 @@ redef class AParam
     private init empty_init do end
 
     init init_aparam (
-            n_id: nullable TId ,
-            n_type: nullable PType ,
-            n_dotdotdot: nullable TDotdotdot 
+            n_id: nullable TId,
+            n_type: nullable AType,
+            n_dotdotdot: nullable TDotdotdot
     )
     do
         empty_init
@@ -3828,7 +3810,7 @@ redef class AParam
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_id == old_child then
             if new_child != null then
@@ -3843,7 +3825,7 @@ redef class AParam
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                _n_type = null
@@ -3918,11 +3900,11 @@ redef class AClosureDecl
     private init empty_init do end
 
     init init_aclosuredecl (
-            n_kwwith: nullable TKwwith ,
-            n_kwbreak: nullable TKwbreak ,
-            n_id: nullable TId ,
-            n_signature: nullable PSignature ,
-            n_expr: nullable PExpr 
+            n_kwwith: nullable TKwwith,
+            n_kwbreak: nullable TKwbreak,
+            n_id: nullable TId,
+            n_signature: nullable ASignature,
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -3942,7 +3924,7 @@ redef class AClosureDecl
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwwith == old_child then
             if new_child != null then
@@ -3977,7 +3959,7 @@ redef class AClosureDecl
         if _n_signature == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PSignature
+               assert new_child isa ASignature
                 _n_signature = new_child
            else
                abort
@@ -3987,7 +3969,7 @@ redef class AClosureDecl
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                _n_expr = null
@@ -4039,9 +4021,9 @@ redef class AType
     private init empty_init do end
 
     init init_atype (
-            n_kwnullable: nullable TKwnullable ,
-            n_id: nullable TClassid ,
-            n_types: Collection[Object]  # Should be Collection[PType]
+            n_kwnullable: nullable TKwnullable,
+            n_id: nullable TClassid,
+            n_types: Collection[Object] # Should be Collection[AType]
     )
     do
         empty_init
@@ -4052,13 +4034,13 @@ redef class AType
         _n_id = n_id.as(not null)
        n_id.parent = self
        for n in n_types do
-               assert n isa PType
+               assert n isa AType
                _n_types.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwnullable == old_child then
             if new_child != null then
@@ -4083,7 +4065,7 @@ redef class AType
         for i in [0.._n_types.length[ do
             if _n_types[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PType
+                   assert new_child isa AType
                     _n_types[i] = new_child
                     new_child.parent = self
                 else
@@ -4120,28 +4102,90 @@ redef class AType
        end
     end
 end
+redef class ALabel
+    redef fun n_kwlabel=(n)
+    do
+        _n_kwlabel = n
+       n.parent = self
+    end
+    redef fun n_id=(n)
+    do
+        _n_id = n
+       n.parent = self
+    end
+
+    private init empty_init do end
+
+    init init_alabel (
+            n_kwlabel: nullable TKwlabel,
+            n_id: nullable TId
+    )
+    do
+        empty_init
+        _n_kwlabel = n_kwlabel.as(not null)
+       n_kwlabel.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_kwlabel == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TKwlabel
+                _n_kwlabel = new_child
+           else
+               abort
+            end
+            return
+       end
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TId
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_kwlabel)
+        v.enter_visit(_n_id)
+    end
+
+    redef fun visit_all_reverse(v: Visitor)
+    do
+        v.enter_visit(_n_kwlabel)
+        v.enter_visit(_n_id)
+    end
+end
 redef class ABlockExpr
 
     private init empty_init do end
 
     init init_ablockexpr (
-            n_expr: Collection[Object]  # Should be Collection[PExpr]
+            n_expr: Collection[Object] # Should be Collection[AExpr]
     )
     do
         empty_init
        for n in n_expr do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_expr.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         for i in [0.._n_expr.length[ do
             if _n_expr[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_expr[i] = new_child
                     new_child.parent = self
                 else
@@ -4206,11 +4250,11 @@ redef class AVardeclExpr
     private init empty_init do end
 
     init init_avardeclexpr (
-            n_kwvar: nullable TKwvar ,
-            n_id: nullable TId ,
-            n_type: nullable PType ,
-            n_assign: nullable TAssign ,
-            n_expr: nullable PExpr 
+            n_kwvar: nullable TKwvar,
+            n_id: nullable TId,
+            n_type: nullable AType,
+            n_assign: nullable TAssign,
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -4232,7 +4276,7 @@ redef class AVardeclExpr
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwvar == old_child then
             if new_child != null then
@@ -4257,7 +4301,7 @@ redef class AVardeclExpr
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                _n_type = null
@@ -4277,7 +4321,7 @@ redef class AVardeclExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                _n_expr = null
@@ -4333,8 +4377,8 @@ redef class AReturnExpr
     private init empty_init do end
 
     init init_areturnexpr (
-            n_kwreturn: nullable TKwreturn ,
-            n_expr: nullable PExpr 
+            n_kwreturn: nullable TKwreturn,
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -4346,7 +4390,7 @@ redef class AReturnExpr
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwreturn == old_child then
             if new_child != null then
@@ -4361,7 +4405,7 @@ redef class AReturnExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                _n_expr = null
@@ -4392,6 +4436,13 @@ redef class ABreakExpr
         _n_kwbreak = n
        n.parent = self
     end
+    redef fun n_label=(n)
+    do
+        _n_label = n
+        if n != null then
+           n.parent = self
+        end
+    end
     redef fun n_expr=(n)
     do
         _n_expr = n
@@ -4403,20 +4454,25 @@ redef class ABreakExpr
     private init empty_init do end
 
     init init_abreakexpr (
-            n_kwbreak: nullable TKwbreak ,
-            n_expr: nullable PExpr 
+            n_kwbreak: nullable TKwbreak,
+            n_label: nullable ALabel,
+            n_expr: nullable AExpr
     )
     do
         empty_init
         _n_kwbreak = n_kwbreak.as(not null)
        n_kwbreak.parent = self
+        _n_label = n_label
+       if n_label != null then
+               n_label.parent = self
+       end
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwbreak == old_child then
             if new_child != null then
@@ -4428,10 +4484,20 @@ redef class ABreakExpr
             end
             return
        end
+        if _n_label == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa ALabel
+                _n_label = new_child
+           else
+               _n_label = null
+            end
+            return
+       end
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                _n_expr = null
@@ -4443,6 +4509,9 @@ redef class ABreakExpr
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwbreak)
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -4451,6 +4520,9 @@ redef class ABreakExpr
     redef fun visit_all_reverse(v: Visitor)
     do
         v.enter_visit(_n_kwbreak)
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -4466,7 +4538,7 @@ redef class AAbortExpr
     private init empty_init do end
 
     init init_aabortexpr (
-            n_kwabort: nullable TKwabort 
+            n_kwabort: nullable TKwabort
     )
     do
         empty_init
@@ -4474,7 +4546,7 @@ redef class AAbortExpr
        n_kwabort.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwabort == old_child then
             if new_child != null then
@@ -4504,6 +4576,13 @@ redef class AContinueExpr
         _n_kwcontinue = n
        n.parent = self
     end
+    redef fun n_label=(n)
+    do
+        _n_label = n
+        if n != null then
+           n.parent = self
+        end
+    end
     redef fun n_expr=(n)
     do
         _n_expr = n
@@ -4515,20 +4594,25 @@ redef class AContinueExpr
     private init empty_init do end
 
     init init_acontinueexpr (
-            n_kwcontinue: nullable TKwcontinue ,
-            n_expr: nullable PExpr 
+            n_kwcontinue: nullable TKwcontinue,
+            n_label: nullable ALabel,
+            n_expr: nullable AExpr
     )
     do
         empty_init
         _n_kwcontinue = n_kwcontinue.as(not null)
        n_kwcontinue.parent = self
+        _n_label = n_label
+       if n_label != null then
+               n_label.parent = self
+       end
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwcontinue == old_child then
             if new_child != null then
@@ -4540,10 +4624,20 @@ redef class AContinueExpr
             end
             return
        end
+        if _n_label == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa ALabel
+                _n_label = new_child
+           else
+               _n_label = null
+            end
+            return
+       end
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                _n_expr = null
@@ -4555,6 +4649,9 @@ redef class AContinueExpr
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwcontinue)
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -4563,6 +4660,9 @@ redef class AContinueExpr
     redef fun visit_all_reverse(v: Visitor)
     do
         v.enter_visit(_n_kwcontinue)
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -4581,12 +4681,20 @@ redef class ADoExpr
            n.parent = self
         end
     end
+    redef fun n_label=(n)
+    do
+        _n_label = n
+        if n != null then
+           n.parent = self
+        end
+    end
 
     private init empty_init do end
 
     init init_adoexpr (
-            n_kwdo: nullable TKwdo ,
-            n_block: nullable PExpr 
+            n_kwdo: nullable TKwdo,
+            n_block: nullable AExpr,
+            n_label: nullable ALabel
     )
     do
         empty_init
@@ -4596,9 +4704,13 @@ redef class ADoExpr
        if n_block != null then
                n_block.parent = self
        end
+        _n_label = n_label
+       if n_label != null then
+               n_label.parent = self
+       end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwdo == old_child then
             if new_child != null then
@@ -4613,13 +4725,23 @@ redef class ADoExpr
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_block = new_child
            else
                _n_block = null
             end
             return
        end
+        if _n_label == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa ALabel
+                _n_label = new_child
+           else
+               _n_label = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
@@ -4628,6 +4750,9 @@ redef class ADoExpr
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
     end
 
     redef fun visit_all_reverse(v: Visitor)
@@ -4636,6 +4761,9 @@ redef class ADoExpr
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
     end
 end
 redef class AIfExpr
@@ -4667,10 +4795,10 @@ redef class AIfExpr
     private init empty_init do end
 
     init init_aifexpr (
-            n_kwif: nullable TKwif ,
-            n_expr: nullable PExpr ,
-            n_then: nullable PExpr ,
-            n_else: nullable PExpr 
+            n_kwif: nullable TKwif,
+            n_expr: nullable AExpr,
+            n_then: nullable AExpr,
+            n_else: nullable AExpr
     )
     do
         empty_init
@@ -4688,7 +4816,7 @@ redef class AIfExpr
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwif == old_child then
             if new_child != null then
@@ -4703,7 +4831,7 @@ redef class AIfExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -4713,7 +4841,7 @@ redef class AIfExpr
         if _n_then == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_then = new_child
            else
                _n_then = null
@@ -4723,7 +4851,7 @@ redef class AIfExpr
         if _n_else == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_else = new_child
            else
                _n_else = null
@@ -4791,12 +4919,12 @@ redef class AIfexprExpr
     private init empty_init do end
 
     init init_aifexprexpr (
-            n_kwif: nullable TKwif ,
-            n_expr: nullable PExpr ,
-            n_kwthen: nullable TKwthen ,
-            n_then: nullable PExpr ,
-            n_kwelse: nullable TKwelse ,
-            n_else: nullable PExpr 
+            n_kwif: nullable TKwif,
+            n_expr: nullable AExpr,
+            n_kwthen: nullable TKwthen,
+            n_then: nullable AExpr,
+            n_kwelse: nullable TKwelse,
+            n_else: nullable AExpr
     )
     do
         empty_init
@@ -4814,7 +4942,7 @@ redef class AIfexprExpr
        n_else.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwif == old_child then
             if new_child != null then
@@ -4829,7 +4957,7 @@ redef class AIfexprExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -4849,7 +4977,7 @@ redef class AIfexprExpr
         if _n_then == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_then = new_child
            else
                abort
@@ -4869,7 +4997,7 @@ redef class AIfexprExpr
         if _n_else == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_else = new_child
            else
                abort
@@ -4921,14 +5049,22 @@ redef class AWhileExpr
            n.parent = self
         end
     end
+    redef fun n_label=(n)
+    do
+        _n_label = n
+        if n != null then
+           n.parent = self
+        end
+    end
 
     private init empty_init do end
 
     init init_awhileexpr (
-            n_kwwhile: nullable TKwwhile ,
-            n_expr: nullable PExpr ,
-            n_kwdo: nullable TKwdo ,
-            n_block: nullable PExpr 
+            n_kwwhile: nullable TKwwhile,
+            n_expr: nullable AExpr,
+            n_kwdo: nullable TKwdo,
+            n_block: nullable AExpr,
+            n_label: nullable ALabel
     )
     do
         empty_init
@@ -4942,9 +5078,13 @@ redef class AWhileExpr
        if n_block != null then
                n_block.parent = self
        end
+        _n_label = n_label
+       if n_label != null then
+               n_label.parent = self
+       end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwwhile == old_child then
             if new_child != null then
@@ -4959,7 +5099,7 @@ redef class AWhileExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -4979,13 +5119,23 @@ redef class AWhileExpr
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_block = new_child
            else
                _n_block = null
             end
             return
        end
+        if _n_label == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa ALabel
+                _n_label = new_child
+           else
+               _n_label = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
@@ -4996,6 +5146,9 @@ redef class AWhileExpr
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
     end
 
     redef fun visit_all_reverse(v: Visitor)
@@ -5006,6 +5159,9 @@ redef class AWhileExpr
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
     end
 end
 redef class AForExpr
@@ -5036,15 +5192,23 @@ redef class AForExpr
            n.parent = self
         end
     end
+    redef fun n_label=(n)
+    do
+        _n_label = n
+        if n != null then
+           n.parent = self
+        end
+    end
 
     private init empty_init do end
 
     init init_aforexpr (
-            n_kwfor: nullable TKwfor ,
-            n_id: nullable TId ,
-            n_expr: nullable PExpr ,
-            n_kwdo: nullable TKwdo ,
-            n_block: nullable PExpr 
+            n_kwfor: nullable TKwfor,
+            n_id: nullable TId,
+            n_expr: nullable AExpr,
+            n_kwdo: nullable TKwdo,
+            n_block: nullable AExpr,
+            n_label: nullable ALabel
     )
     do
         empty_init
@@ -5060,9 +5224,13 @@ redef class AForExpr
        if n_block != null then
                n_block.parent = self
        end
+        _n_label = n_label
+       if n_label != null then
+               n_label.parent = self
+       end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwfor == old_child then
             if new_child != null then
@@ -5087,7 +5255,7 @@ redef class AForExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5107,13 +5275,23 @@ redef class AForExpr
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_block = new_child
            else
                _n_block = null
             end
             return
        end
+        if _n_label == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa ALabel
+                _n_label = new_child
+           else
+               _n_label = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
@@ -5125,6 +5303,9 @@ redef class AForExpr
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
     end
 
     redef fun visit_all_reverse(v: Visitor)
@@ -5136,6 +5317,9 @@ redef class AForExpr
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
     end
 end
 redef class AAssertExpr
@@ -5160,9 +5344,9 @@ redef class AAssertExpr
     private init empty_init do end
 
     init init_aassertexpr (
-            n_kwassert: nullable TKwassert ,
-            n_id: nullable TId ,
-            n_expr: nullable PExpr 
+            n_kwassert: nullable TKwassert,
+            n_id: nullable TId,
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -5176,7 +5360,7 @@ redef class AAssertExpr
        n_expr.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwassert == old_child then
             if new_child != null then
@@ -5201,7 +5385,7 @@ redef class AAssertExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5243,8 +5427,8 @@ redef class AOnceExpr
     private init empty_init do end
 
     init init_aonceexpr (
-            n_kwonce: nullable TKwonce ,
-            n_expr: nullable PExpr 
+            n_kwonce: nullable TKwonce,
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -5254,7 +5438,7 @@ redef class AOnceExpr
        n_expr.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwonce == old_child then
             if new_child != null then
@@ -5269,7 +5453,7 @@ redef class AOnceExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5300,7 +5484,7 @@ redef class ASendExpr
     private init empty_init do end
 
     init init_asendexpr (
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -5308,12 +5492,12 @@ redef class ASendExpr
        n_expr.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5347,8 +5531,8 @@ redef class ABinopExpr
     private init empty_init do end
 
     init init_abinopexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5358,12 +5542,12 @@ redef class ABinopExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5373,7 +5557,7 @@ redef class ABinopExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5409,8 +5593,8 @@ redef class AOrExpr
     private init empty_init do end
 
     init init_aorexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5420,12 +5604,12 @@ redef class AOrExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5435,7 +5619,7 @@ redef class AOrExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5471,8 +5655,8 @@ redef class AAndExpr
     private init empty_init do end
 
     init init_aandexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5482,12 +5666,12 @@ redef class AAndExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5497,7 +5681,7 @@ redef class AAndExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5533,8 +5717,8 @@ redef class ANotExpr
     private init empty_init do end
 
     init init_anotexpr (
-            n_kwnot: nullable TKwnot ,
-            n_expr: nullable PExpr 
+            n_kwnot: nullable TKwnot,
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -5544,7 +5728,7 @@ redef class ANotExpr
        n_expr.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwnot == old_child then
             if new_child != null then
@@ -5559,7 +5743,7 @@ redef class ANotExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5595,8 +5779,8 @@ redef class AEqExpr
     private init empty_init do end
 
     init init_aeqexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5606,12 +5790,12 @@ redef class AEqExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5621,7 +5805,7 @@ redef class AEqExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5657,8 +5841,8 @@ redef class AEeExpr
     private init empty_init do end
 
     init init_aeeexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5668,12 +5852,12 @@ redef class AEeExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5683,7 +5867,7 @@ redef class AEeExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5719,8 +5903,8 @@ redef class ANeExpr
     private init empty_init do end
 
     init init_aneexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5730,12 +5914,12 @@ redef class ANeExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5745,7 +5929,7 @@ redef class ANeExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5781,8 +5965,8 @@ redef class ALtExpr
     private init empty_init do end
 
     init init_altexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5792,12 +5976,12 @@ redef class ALtExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5807,7 +5991,7 @@ redef class ALtExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5843,8 +6027,8 @@ redef class ALeExpr
     private init empty_init do end
 
     init init_aleexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5854,12 +6038,12 @@ redef class ALeExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5869,7 +6053,7 @@ redef class ALeExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5905,8 +6089,8 @@ redef class AGtExpr
     private init empty_init do end
 
     init init_agtexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5916,12 +6100,12 @@ redef class AGtExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5931,7 +6115,7 @@ redef class AGtExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -5967,8 +6151,8 @@ redef class AGeExpr
     private init empty_init do end
 
     init init_ageexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -5978,12 +6162,12 @@ redef class AGeExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -5993,7 +6177,7 @@ redef class AGeExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -6029,8 +6213,8 @@ redef class AIsaExpr
     private init empty_init do end
 
     init init_aisaexpr (
-            n_expr: nullable PExpr ,
-            n_type: nullable PType 
+            n_expr: nullable AExpr,
+            n_type: nullable AType
     )
     do
         empty_init
@@ -6040,12 +6224,12 @@ redef class AIsaExpr
        n_type.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6055,7 +6239,7 @@ redef class AIsaExpr
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                abort
@@ -6091,8 +6275,8 @@ redef class APlusExpr
     private init empty_init do end
 
     init init_aplusexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -6102,12 +6286,12 @@ redef class APlusExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6117,7 +6301,7 @@ redef class APlusExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -6153,8 +6337,8 @@ redef class AMinusExpr
     private init empty_init do end
 
     init init_aminusexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -6164,12 +6348,12 @@ redef class AMinusExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6179,7 +6363,7 @@ redef class AMinusExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -6215,8 +6399,8 @@ redef class AStarshipExpr
     private init empty_init do end
 
     init init_astarshipexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -6226,12 +6410,12 @@ redef class AStarshipExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6241,7 +6425,7 @@ redef class AStarshipExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -6277,8 +6461,8 @@ redef class AStarExpr
     private init empty_init do end
 
     init init_astarexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -6288,12 +6472,12 @@ redef class AStarExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6303,7 +6487,7 @@ redef class AStarExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -6339,8 +6523,8 @@ redef class ASlashExpr
     private init empty_init do end
 
     init init_aslashexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -6350,12 +6534,12 @@ redef class ASlashExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6365,7 +6549,7 @@ redef class ASlashExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -6401,8 +6585,8 @@ redef class APercentExpr
     private init empty_init do end
 
     init init_apercentexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -6412,12 +6596,12 @@ redef class APercentExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6427,7 +6611,7 @@ redef class APercentExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -6463,8 +6647,8 @@ redef class AUminusExpr
     private init empty_init do end
 
     init init_auminusexpr (
-            n_minus: nullable TMinus ,
-            n_expr: nullable PExpr 
+            n_minus: nullable TMinus,
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -6474,7 +6658,7 @@ redef class AUminusExpr
        n_expr.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_minus == old_child then
             if new_child != null then
@@ -6489,7 +6673,7 @@ redef class AUminusExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6532,10 +6716,10 @@ redef class ANewExpr
     private init empty_init do end
 
     init init_anewexpr (
-            n_kwnew: nullable TKwnew ,
-            n_type: nullable PType ,
-            n_id: nullable TId ,
-            n_args: Collection[Object]  # Should be Collection[PExpr]
+            n_kwnew: nullable TKwnew,
+            n_type: nullable AType,
+            n_id: nullable TId,
+            n_args: Collection[Object] # Should be Collection[AExpr]
     )
     do
         empty_init
@@ -6548,13 +6732,13 @@ redef class ANewExpr
                n_id.parent = self
        end
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwnew == old_child then
             if new_child != null then
@@ -6569,7 +6753,7 @@ redef class ANewExpr
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                abort
@@ -6589,7 +6773,7 @@ redef class ANewExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -6643,8 +6827,8 @@ redef class AAttrExpr
     private init empty_init do end
 
     init init_aattrexpr (
-            n_expr: nullable PExpr ,
-            n_id: nullable TAttrid 
+            n_expr: nullable AExpr,
+            n_id: nullable TAttrid
     )
     do
         empty_init
@@ -6654,12 +6838,12 @@ redef class AAttrExpr
        n_id.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6715,10 +6899,10 @@ redef class AAttrAssignExpr
     private init empty_init do end
 
     init init_aattrassignexpr (
-            n_expr: nullable PExpr ,
-            n_id: nullable TAttrid ,
-            n_assign: nullable TAssign ,
-            n_value: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_id: nullable TAttrid,
+            n_assign: nullable TAssign,
+            n_value: nullable AExpr
     )
     do
         empty_init
@@ -6732,12 +6916,12 @@ redef class AAttrAssignExpr
        n_value.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6767,7 +6951,7 @@ redef class AAttrAssignExpr
         if _n_value == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_value = new_child
            else
                abort
@@ -6817,10 +7001,10 @@ redef class AAttrReassignExpr
     private init empty_init do end
 
     init init_aattrreassignexpr (
-            n_expr: nullable PExpr ,
-            n_id: nullable TAttrid ,
-            n_assign_op: nullable PAssignOp ,
-            n_value: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_id: nullable TAttrid,
+            n_assign_op: nullable AAssignOp,
+            n_value: nullable AExpr
     )
     do
         empty_init
@@ -6834,12 +7018,12 @@ redef class AAttrReassignExpr
        n_value.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6859,7 +7043,7 @@ redef class AAttrReassignExpr
         if _n_assign_op == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PAssignOp
+               assert new_child isa AAssignOp
                 _n_assign_op = new_child
            else
                abort
@@ -6869,7 +7053,7 @@ redef class AAttrReassignExpr
         if _n_value == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_value = new_child
            else
                abort
@@ -6909,10 +7093,10 @@ redef class ACallExpr
     private init empty_init do end
 
     init init_acallexpr (
-            n_expr: nullable PExpr ,
-            n_id: nullable TId ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_closure_defs: Collection[Object]  # Should be Collection[PClosureDef]
+            n_expr: nullable AExpr,
+            n_id: nullable TId,
+            n_args: Collection[Object], # Should be Collection[AExpr]
+            n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
     )
     do
         empty_init
@@ -6921,23 +7105,23 @@ redef class ACallExpr
         _n_id = n_id.as(not null)
        n_id.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
        for n in n_closure_defs do
-               assert n isa PClosureDef
+               assert n isa AClosureDef
                _n_closure_defs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -6957,7 +7141,7 @@ redef class ACallExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -6969,7 +7153,7 @@ redef class ACallExpr
         for i in [0.._n_closure_defs.length[ do
             if _n_closure_defs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PClosureDef
+                   assert new_child isa AClosureDef
                     _n_closure_defs[i] = new_child
                     new_child.parent = self
                 else
@@ -7037,11 +7221,11 @@ redef class ACallAssignExpr
     private init empty_init do end
 
     init init_acallassignexpr (
-            n_expr: nullable PExpr ,
-            n_id: nullable TId ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign: nullable TAssign ,
-            n_value: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_id: nullable TId,
+            n_args: Collection[Object], # Should be Collection[AExpr]
+            n_assign: nullable TAssign,
+            n_value: nullable AExpr
     )
     do
         empty_init
@@ -7050,7 +7234,7 @@ redef class ACallAssignExpr
         _n_id = n_id.as(not null)
        n_id.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
@@ -7060,12 +7244,12 @@ redef class ACallAssignExpr
        n_value.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -7085,7 +7269,7 @@ redef class ACallAssignExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -7107,7 +7291,7 @@ redef class ACallAssignExpr
         if _n_value == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_value = new_child
            else
                abort
@@ -7167,11 +7351,11 @@ redef class ACallReassignExpr
     private init empty_init do end
 
     init init_acallreassignexpr (
-            n_expr: nullable PExpr ,
-            n_id: nullable TId ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign_op: nullable PAssignOp ,
-            n_value: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_id: nullable TId,
+            n_args: Collection[Object], # Should be Collection[AExpr]
+            n_assign_op: nullable AAssignOp,
+            n_value: nullable AExpr
     )
     do
         empty_init
@@ -7180,7 +7364,7 @@ redef class ACallReassignExpr
         _n_id = n_id.as(not null)
        n_id.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
@@ -7190,12 +7374,12 @@ redef class ACallReassignExpr
        n_value.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -7215,7 +7399,7 @@ redef class ACallReassignExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -7227,7 +7411,7 @@ redef class ACallReassignExpr
         if _n_assign_op == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PAssignOp
+               assert new_child isa AAssignOp
                 _n_assign_op = new_child
            else
                abort
@@ -7237,7 +7421,7 @@ redef class ACallReassignExpr
         if _n_value == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_value = new_child
            else
                abort
@@ -7289,9 +7473,9 @@ redef class ASuperExpr
     private init empty_init do end
 
     init init_asuperexpr (
-            n_qualified: nullable PQualified ,
-            n_kwsuper: nullable TKwsuper ,
-            n_args: Collection[Object]  # Should be Collection[PExpr]
+            n_qualified: nullable AQualified,
+            n_kwsuper: nullable TKwsuper,
+            n_args: Collection[Object] # Should be Collection[AExpr]
     )
     do
         empty_init
@@ -7302,18 +7486,18 @@ redef class ASuperExpr
         _n_kwsuper = n_kwsuper.as(not null)
        n_kwsuper.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_qualified == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PQualified
+               assert new_child isa AQualified
                 _n_qualified = new_child
            else
                _n_qualified = null
@@ -7333,7 +7517,7 @@ redef class ASuperExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -7385,9 +7569,9 @@ redef class AInitExpr
     private init empty_init do end
 
     init init_ainitexpr (
-            n_expr: nullable PExpr ,
-            n_kwinit: nullable TKwinit ,
-            n_args: Collection[Object]  # Should be Collection[PExpr]
+            n_expr: nullable AExpr,
+            n_kwinit: nullable TKwinit,
+            n_args: Collection[Object] # Should be Collection[AExpr]
     )
     do
         empty_init
@@ -7396,18 +7580,18 @@ redef class AInitExpr
         _n_kwinit = n_kwinit.as(not null)
        n_kwinit.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -7427,7 +7611,7 @@ redef class AInitExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -7470,32 +7654,32 @@ redef class ABraExpr
     private init empty_init do end
 
     init init_abraexpr (
-            n_expr: nullable PExpr ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_closure_defs: Collection[Object]  # Should be Collection[PClosureDef]
+            n_expr: nullable AExpr,
+            n_args: Collection[Object], # Should be Collection[AExpr]
+            n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
     )
     do
         empty_init
         _n_expr = n_expr.as(not null)
        n_expr.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
        for n in n_closure_defs do
-               assert n isa PClosureDef
+               assert n isa AClosureDef
                _n_closure_defs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -7505,7 +7689,7 @@ redef class ABraExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -7517,7 +7701,7 @@ redef class ABraExpr
         for i in [0.._n_closure_defs.length[ do
             if _n_closure_defs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PClosureDef
+                   assert new_child isa AClosureDef
                     _n_closure_defs[i] = new_child
                     new_child.parent = self
                 else
@@ -7578,17 +7762,17 @@ redef class ABraAssignExpr
     private init empty_init do end
 
     init init_abraassignexpr (
-            n_expr: nullable PExpr ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign: nullable TAssign ,
-            n_value: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_args: Collection[Object], # Should be Collection[AExpr]
+            n_assign: nullable TAssign,
+            n_value: nullable AExpr
     )
     do
         empty_init
         _n_expr = n_expr.as(not null)
        n_expr.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
@@ -7598,12 +7782,12 @@ redef class ABraAssignExpr
        n_value.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -7613,7 +7797,7 @@ redef class ABraAssignExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -7635,7 +7819,7 @@ redef class ABraAssignExpr
         if _n_value == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_value = new_child
            else
                abort
@@ -7688,17 +7872,17 @@ redef class ABraReassignExpr
     private init empty_init do end
 
     init init_abrareassignexpr (
-            n_expr: nullable PExpr ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign_op: nullable PAssignOp ,
-            n_value: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_args: Collection[Object], # Should be Collection[AExpr]
+            n_assign_op: nullable AAssignOp,
+            n_value: nullable AExpr
     )
     do
         empty_init
         _n_expr = n_expr.as(not null)
        n_expr.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
@@ -7708,12 +7892,12 @@ redef class ABraReassignExpr
        n_value.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -7723,7 +7907,7 @@ redef class ABraReassignExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -7735,7 +7919,7 @@ redef class ABraReassignExpr
         if _n_assign_op == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PAssignOp
+               assert new_child isa AAssignOp
                 _n_assign_op = new_child
            else
                abort
@@ -7745,7 +7929,7 @@ redef class ABraReassignExpr
         if _n_value == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_value = new_child
            else
                abort
@@ -7788,27 +7972,27 @@ redef class AClosureCallExpr
     private init empty_init do end
 
     init init_aclosurecallexpr (
-            n_id: nullable TId ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_closure_defs: Collection[Object]  # Should be Collection[PClosureDef]
+            n_id: nullable TId,
+            n_args: Collection[Object], # Should be Collection[AExpr]
+            n_closure_defs: Collection[Object] # Should be Collection[AClosureDef]
     )
     do
         empty_init
         _n_id = n_id.as(not null)
        n_id.parent = self
        for n in n_args do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_args.add(n)
                n.parent = self
        end
        for n in n_closure_defs do
-               assert n isa PClosureDef
+               assert n isa AClosureDef
                _n_closure_defs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_id == old_child then
             if new_child != null then
@@ -7823,7 +8007,7 @@ redef class AClosureCallExpr
         for i in [0.._n_args.length[ do
             if _n_args[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_args[i] = new_child
                     new_child.parent = self
                 else
@@ -7835,7 +8019,7 @@ redef class AClosureCallExpr
         for i in [0.._n_closure_defs.length[ do
             if _n_closure_defs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PClosureDef
+                   assert new_child isa AClosureDef
                     _n_closure_defs[i] = new_child
                     new_child.parent = self
                 else
@@ -7886,7 +8070,7 @@ redef class AVarExpr
     private init empty_init do end
 
     init init_avarexpr (
-            n_id: nullable TId 
+            n_id: nullable TId
     )
     do
         empty_init
@@ -7894,7 +8078,7 @@ redef class AVarExpr
        n_id.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_id == old_child then
             if new_child != null then
@@ -7938,9 +8122,9 @@ redef class AVarAssignExpr
     private init empty_init do end
 
     init init_avarassignexpr (
-            n_id: nullable TId ,
-            n_assign: nullable TAssign ,
-            n_value: nullable PExpr 
+            n_id: nullable TId,
+            n_assign: nullable TAssign,
+            n_value: nullable AExpr
     )
     do
         empty_init
@@ -7952,7 +8136,7 @@ redef class AVarAssignExpr
        n_value.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_id == old_child then
             if new_child != null then
@@ -7977,7 +8161,7 @@ redef class AVarAssignExpr
         if _n_value == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_value = new_child
            else
                abort
@@ -8020,9 +8204,9 @@ redef class AVarReassignExpr
     private init empty_init do end
 
     init init_avarreassignexpr (
-            n_id: nullable TId ,
-            n_assign_op: nullable PAssignOp ,
-            n_value: nullable PExpr 
+            n_id: nullable TId,
+            n_assign_op: nullable AAssignOp,
+            n_value: nullable AExpr
     )
     do
         empty_init
@@ -8034,7 +8218,7 @@ redef class AVarReassignExpr
        n_value.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_id == old_child then
             if new_child != null then
@@ -8049,7 +8233,7 @@ redef class AVarReassignExpr
         if _n_assign_op == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PAssignOp
+               assert new_child isa AAssignOp
                 _n_assign_op = new_child
            else
                abort
@@ -8059,7 +8243,7 @@ redef class AVarReassignExpr
         if _n_value == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_value = new_child
            else
                abort
@@ -8097,8 +8281,8 @@ redef class ARangeExpr
     private init empty_init do end
 
     init init_arangeexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -8108,12 +8292,12 @@ redef class ARangeExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -8123,7 +8307,7 @@ redef class ARangeExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -8159,8 +8343,8 @@ redef class ACrangeExpr
     private init empty_init do end
 
     init init_acrangeexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -8170,12 +8354,12 @@ redef class ACrangeExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -8185,7 +8369,7 @@ redef class ACrangeExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -8221,8 +8405,8 @@ redef class AOrangeExpr
     private init empty_init do end
 
     init init_aorangeexpr (
-            n_expr: nullable PExpr ,
-            n_expr2: nullable PExpr 
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
     )
     do
         empty_init
@@ -8232,12 +8416,12 @@ redef class AOrangeExpr
        n_expr2.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -8247,7 +8431,7 @@ redef class AOrangeExpr
         if _n_expr2 == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr2 = new_child
            else
                abort
@@ -8273,23 +8457,23 @@ redef class AArrayExpr
     private init empty_init do end
 
     init init_aarrayexpr (
-            n_exprs: Collection[Object]  # Should be Collection[PExpr]
+            n_exprs: Collection[Object] # Should be Collection[AExpr]
     )
     do
         empty_init
        for n in n_exprs do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_exprs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         for i in [0.._n_exprs.length[ do
             if _n_exprs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_exprs[i] = new_child
                     new_child.parent = self
                 else
@@ -8328,7 +8512,7 @@ redef class ASelfExpr
     private init empty_init do end
 
     init init_aselfexpr (
-            n_kwself: nullable TKwself 
+            n_kwself: nullable TKwself
     )
     do
         empty_init
@@ -8336,7 +8520,7 @@ redef class ASelfExpr
        n_kwself.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwself == old_child then
             if new_child != null then
@@ -8369,7 +8553,7 @@ redef class AImplicitSelfExpr
         empty_init
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
     end
 
@@ -8391,7 +8575,7 @@ redef class ATrueExpr
     private init empty_init do end
 
     init init_atrueexpr (
-            n_kwtrue: nullable TKwtrue 
+            n_kwtrue: nullable TKwtrue
     )
     do
         empty_init
@@ -8399,7 +8583,7 @@ redef class ATrueExpr
        n_kwtrue.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwtrue == old_child then
             if new_child != null then
@@ -8433,7 +8617,7 @@ redef class AFalseExpr
     private init empty_init do end
 
     init init_afalseexpr (
-            n_kwfalse: nullable TKwfalse 
+            n_kwfalse: nullable TKwfalse
     )
     do
         empty_init
@@ -8441,7 +8625,7 @@ redef class AFalseExpr
        n_kwfalse.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwfalse == old_child then
             if new_child != null then
@@ -8475,7 +8659,7 @@ redef class ANullExpr
     private init empty_init do end
 
     init init_anullexpr (
-            n_kwnull: nullable TKwnull 
+            n_kwnull: nullable TKwnull
     )
     do
         empty_init
@@ -8483,7 +8667,7 @@ redef class ANullExpr
        n_kwnull.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwnull == old_child then
             if new_child != null then
@@ -8517,7 +8701,7 @@ redef class AIntExpr
     private init empty_init do end
 
     init init_aintexpr (
-            n_number: nullable TNumber 
+            n_number: nullable TNumber
     )
     do
         empty_init
@@ -8525,7 +8709,7 @@ redef class AIntExpr
        n_number.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_number == old_child then
             if new_child != null then
@@ -8559,7 +8743,7 @@ redef class AFloatExpr
     private init empty_init do end
 
     init init_afloatexpr (
-            n_float: nullable TFloat 
+            n_float: nullable TFloat
     )
     do
         empty_init
@@ -8567,7 +8751,7 @@ redef class AFloatExpr
        n_float.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_float == old_child then
             if new_child != null then
@@ -8601,7 +8785,7 @@ redef class ACharExpr
     private init empty_init do end
 
     init init_acharexpr (
-            n_char: nullable TChar 
+            n_char: nullable TChar
     )
     do
         empty_init
@@ -8609,7 +8793,7 @@ redef class ACharExpr
        n_char.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_char == old_child then
             if new_child != null then
@@ -8643,7 +8827,7 @@ redef class AStringExpr
     private init empty_init do end
 
     init init_astringexpr (
-            n_string: nullable TString 
+            n_string: nullable TString
     )
     do
         empty_init
@@ -8651,7 +8835,7 @@ redef class AStringExpr
        n_string.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_string == old_child then
             if new_child != null then
@@ -8685,7 +8869,7 @@ redef class AStartStringExpr
     private init empty_init do end
 
     init init_astartstringexpr (
-            n_string: nullable TStartString 
+            n_string: nullable TStartString
     )
     do
         empty_init
@@ -8693,7 +8877,7 @@ redef class AStartStringExpr
        n_string.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_string == old_child then
             if new_child != null then
@@ -8727,7 +8911,7 @@ redef class AMidStringExpr
     private init empty_init do end
 
     init init_amidstringexpr (
-            n_string: nullable TMidString 
+            n_string: nullable TMidString
     )
     do
         empty_init
@@ -8735,7 +8919,7 @@ redef class AMidStringExpr
        n_string.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_string == old_child then
             if new_child != null then
@@ -8769,7 +8953,7 @@ redef class AEndStringExpr
     private init empty_init do end
 
     init init_aendstringexpr (
-            n_string: nullable TEndString 
+            n_string: nullable TEndString
     )
     do
         empty_init
@@ -8777,7 +8961,7 @@ redef class AEndStringExpr
        n_string.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_string == old_child then
             if new_child != null then
@@ -8806,23 +8990,23 @@ redef class ASuperstringExpr
     private init empty_init do end
 
     init init_asuperstringexpr (
-            n_exprs: Collection[Object]  # Should be Collection[PExpr]
+            n_exprs: Collection[Object] # Should be Collection[AExpr]
     )
     do
         empty_init
        for n in n_exprs do
-               assert n isa PExpr
+               assert n isa AExpr
                _n_exprs.add(n)
                n.parent = self
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         for i in [0.._n_exprs.length[ do
             if _n_exprs[i] == old_child then
                 if new_child != null then
-                   assert new_child isa PExpr
+                   assert new_child isa AExpr
                     _n_exprs[i] = new_child
                     new_child.parent = self
                 else
@@ -8861,7 +9045,7 @@ redef class AParExpr
     private init empty_init do end
 
     init init_aparexpr (
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr
     )
     do
         empty_init
@@ -8869,12 +9053,12 @@ redef class AParExpr
        n_expr.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -8913,9 +9097,9 @@ redef class AAsCastExpr
     private init empty_init do end
 
     init init_aascastexpr (
-            n_expr: nullable PExpr ,
-            n_kwas: nullable TKwas ,
-            n_type: nullable PType 
+            n_expr: nullable AExpr,
+            n_kwas: nullable TKwas,
+            n_type: nullable AType
     )
     do
         empty_init
@@ -8927,12 +9111,12 @@ redef class AAsCastExpr
        n_type.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -8952,7 +9136,7 @@ redef class AAsCastExpr
         if _n_type == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PType
+               assert new_child isa AType
                 _n_type = new_child
            else
                abort
@@ -9000,10 +9184,10 @@ redef class AAsNotnullExpr
     private init empty_init do end
 
     init init_aasnotnullexpr (
-            n_expr: nullable PExpr ,
-            n_kwas: nullable TKwas ,
-            n_kwnot: nullable TKwnot ,
-            n_kwnull: nullable TKwnull 
+            n_expr: nullable AExpr,
+            n_kwas: nullable TKwas,
+            n_kwnot: nullable TKwnot,
+            n_kwnull: nullable TKwnull
     )
     do
         empty_init
@@ -9017,12 +9201,12 @@ redef class AAsNotnullExpr
        n_kwnull.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -9097,9 +9281,9 @@ redef class AIssetAttrExpr
     private init empty_init do end
 
     init init_aissetattrexpr (
-            n_kwisset: nullable TKwisset ,
-            n_expr: nullable PExpr ,
-            n_id: nullable TAttrid 
+            n_kwisset: nullable TKwisset,
+            n_expr: nullable AExpr,
+            n_id: nullable TAttrid
     )
     do
         empty_init
@@ -9111,7 +9295,7 @@ redef class AIssetAttrExpr
        n_id.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwisset == old_child then
             if new_child != null then
@@ -9126,7 +9310,7 @@ redef class AIssetAttrExpr
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                abort
@@ -9169,7 +9353,7 @@ redef class APlusAssignOp
     private init empty_init do end
 
     init init_aplusassignop (
-            n_pluseq: nullable TPluseq 
+            n_pluseq: nullable TPluseq
     )
     do
         empty_init
@@ -9177,7 +9361,7 @@ redef class APlusAssignOp
        n_pluseq.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_pluseq == old_child then
             if new_child != null then
@@ -9211,7 +9395,7 @@ redef class AMinusAssignOp
     private init empty_init do end
 
     init init_aminusassignop (
-            n_minuseq: nullable TMinuseq 
+            n_minuseq: nullable TMinuseq
     )
     do
         empty_init
@@ -9219,7 +9403,7 @@ redef class AMinusAssignOp
        n_minuseq.parent = self
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_minuseq == old_child then
             if new_child != null then
@@ -9261,14 +9445,22 @@ redef class AClosureDef
            n.parent = self
         end
     end
+    redef fun n_label=(n)
+    do
+        _n_label = n
+        if n != null then
+           n.parent = self
+        end
+    end
 
     private init empty_init do end
 
     init init_aclosuredef (
-            n_kwwith: nullable TKwwith ,
-            n_id: Collection[Object] , # Should be Collection[TId]
-            n_kwdo: nullable TKwdo ,
-            n_expr: nullable PExpr 
+            n_kwwith: nullable TKwwith,
+            n_id: Collection[Object], # Should be Collection[TId]
+            n_kwdo: nullable TKwdo,
+            n_expr: nullable AExpr,
+            n_label: nullable ALabel
     )
     do
         empty_init
@@ -9285,9 +9477,13 @@ redef class AClosureDef
        if n_expr != null then
                n_expr.parent = self
        end
+        _n_label = n_label
+       if n_label != null then
+               n_label.parent = self
+       end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_kwwith == old_child then
             if new_child != null then
@@ -9324,13 +9520,23 @@ redef class AClosureDef
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa PExpr
+               assert new_child isa AExpr
                 _n_expr = new_child
            else
                _n_expr = null
             end
             return
        end
+        if _n_label == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa ALabel
+                _n_label = new_child
+           else
+               _n_label = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
@@ -9343,6 +9549,9 @@ redef class AClosureDef
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
     end
 
     redef fun visit_all_reverse(v: Visitor)
@@ -9359,6 +9568,9 @@ redef class AClosureDef
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
+        if _n_label != null then
+            v.enter_visit(_n_label.as(not null))
+        end
     end
 end
 redef class AQualified
@@ -9373,8 +9585,8 @@ redef class AQualified
     private init empty_init do end
 
     init init_aqualified (
-            n_id: Collection[Object] , # Should be Collection[TId]
-            n_classid: nullable TClassid 
+            n_id: Collection[Object], # Should be Collection[TId]
+            n_classid: nullable TClassid
     )
     do
         empty_init
@@ -9389,7 +9601,7 @@ redef class AQualified
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         for i in [0.._n_id.length[ do
             if _n_id[i] == old_child then
@@ -9444,7 +9656,7 @@ redef class ADoc
     private init empty_init do end
 
     init init_adoc (
-            n_comment: Collection[Object]  # Should be Collection[TComment]
+            n_comment: Collection[Object] # Should be Collection[TComment]
     )
     do
         empty_init
@@ -9455,7 +9667,7 @@ redef class ADoc
        end
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         for i in [0.._n_comment.length[ do
             if _n_comment[i] == old_child then
@@ -9492,20 +9704,20 @@ end
 
 redef class Start
     init(
-        n_base: nullable PModule,
+        n_base: nullable AModule,
         n_eof: EOF)
     do
         _n_base = n_base
         _n_eof = n_eof
     end
 
-    redef fun replace_child(old_child: PNode, new_child: nullable PNode)
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
         if _n_base == old_child then
             if new_child == null then
             else
                 new_child.parent = self
-               assert new_child isa PModule
+               assert new_child isa AModule
                 _n_base = new_child
             end
             old_child.parent = null
@@ -9518,10 +9730,12 @@ redef class Start
         if _n_base != null then
             v.enter_visit(_n_base.as(not null))
         end
+       v.enter_visit(_n_eof)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
+       v.enter_visit(_n_eof)
         if _n_base != null then
             v.enter_visit(_n_base.as(not null))
         end