parser: add copyright info to parser_nodes.nit
[nit.git] / src / parser / parser_prod.nit
index 46c828b..f8c9ba6 100644 (file)
@@ -5,21 +5,21 @@ 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)
@@ -34,30 +34,21 @@ redef class PNode
        # Thus, call "v.visit(e)" for each node e starting from the last child
        fun visit_all_reverse(v: Visitor) is abstract
 
-       # Give a human readable location of the node.
-       fun locate: String is abstract
-
-       # Return only the line number of the node
-       fun line_number: Int is abstract
-
        # Debug method: output a message prefixed with the location.
        fun printl(str: String)
        do
-               print("{locate}: {str}\n")
+               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 locate: String
-       do
-               return "{filename}:{line},{pos}"
-       end
-
-       redef fun line_number do return line
+       redef fun replace_child(old_child: ANode, new_child: nullable ANode) do end
 end
 
 redef class Prod
@@ -67,46 +58,35 @@ redef class Prod
        # The last token of the production node
        readable writable var _last_token: nullable Token
 
-       redef fun locate: String
-       do
-               if first_token == null then
-                       return "????"
-               end
-               if last_token == null then
-                       return "{first_token.locate}--????"
-               end
-               var lastpos = last_token.pos + last_token.text.length - 1
-               if first_token.line == last_token.line then
-                       return "{first_token.locate}--{lastpos}"
-               else
-                       return "{first_token.locate}--{last_token.line}:{lastpos}"
-               end
-       end
-
-       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
-
-       redef fun line_number
-       do
-               if first_token != null then
-                       return first_token.line
-               else
-                       return 0
-               end
-       end
 end
 
 # Abstract standard visitor
 class Visitor
+       # What the visitor do when a node is visited
+        # Concrete visitors should redefine this method.
+        protected fun visit(e: nullable ANode) is abstract
+
         # Ask the visitor to visit a given node.
         # Usually automatically called by visit_all* methods.
-        # Concrete visitors should redefine this method.
-        fun visit(e: nullable PNode) is abstract
+       # This methos should not be redefined
+        fun enter_visit(e: nullable ANode)
+       do
+               var old = _current_node
+               _current_node = e
+               visit(e)
+               _current_node = old
+       end
+
+       # The current visited node
+       readable var _current_node: nullable ANode = null
 end
 
 redef class AModule
@@ -121,9 +101,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
@@ -132,23 +112,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
@@ -158,7 +138,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
@@ -170,7 +150,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
@@ -184,32 +164,32 @@ redef class AModule
     redef fun visit_all(v: Visitor)
     do
         if _n_packagedecl != null then
-            v.visit(_n_packagedecl.as(not null))
+            v.enter_visit(_n_packagedecl.as(not null))
         end
             for n in _n_imports do
-                v.visit(n)
+                v.enter_visit(n)
            end
             for n in _n_classdefs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_packagedecl != null then
-            v.visit(_n_packagedecl.as(not null))
+            v.enter_visit(_n_packagedecl.as(not null))
         end
        do
            var i = _n_imports.length
             while i >= 0 do
-                v.visit(_n_imports[i])
+                v.enter_visit(_n_imports[i])
                i = i - 1
            end
        end
        do
            var i = _n_classdefs.length
             while i >= 0 do
-                v.visit(_n_classdefs[i])
+                v.enter_visit(_n_classdefs[i])
                i = i - 1
            end
        end
@@ -237,7 +217,7 @@ redef class APackagedecl
     private init empty_init do end
 
     init init_apackagedecl (
-            n_doc: nullable PDoc ,
+            n_doc: nullable ADoc ,
             n_kwpackage: nullable TKwpackage ,
             n_id: nullable TId 
     )
@@ -253,12 +233,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
@@ -290,22 +270,22 @@ redef class APackagedecl
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
-        v.visit(_n_kwpackage)
-        v.visit(_n_id)
+        v.enter_visit(_n_kwpackage)
+        v.enter_visit(_n_id)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
-        v.visit(_n_kwpackage)
-        v.visit(_n_id)
+        v.enter_visit(_n_kwpackage)
+        v.enter_visit(_n_id)
     end
 end
-redef class AImport
+redef class AStdImport
     redef fun n_visibility=(n)
     do
         _n_visibility = n
@@ -324,8 +304,8 @@ redef class AImport
 
     private init empty_init do end
 
-    init init_aimport (
-            n_visibility: nullable PVisibility ,
+    init init_astdimport (
+            n_visibility: nullable AVisibility ,
             n_kwimport: nullable TKwimport ,
             n_id: nullable TId 
     )
@@ -339,12 +319,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
@@ -375,16 +355,16 @@ redef class AImport
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_visibility)
-        v.visit(_n_kwimport)
-        v.visit(_n_id)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwimport)
+        v.enter_visit(_n_id)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_visibility)
-        v.visit(_n_kwimport)
-        v.visit(_n_id)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwimport)
+        v.enter_visit(_n_id)
     end
 end
 redef class ANoImport
@@ -407,7 +387,7 @@ redef class ANoImport
     private init empty_init do end
 
     init init_anoimport (
-            n_visibility: nullable PVisibility ,
+            n_visibility: nullable AVisibility ,
             n_kwimport: nullable TKwimport ,
             n_kwend: nullable TKwend 
     )
@@ -421,12 +401,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
@@ -457,16 +437,16 @@ redef class ANoImport
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_visibility)
-        v.visit(_n_kwimport)
-        v.visit(_n_kwend)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwimport)
+        v.enter_visit(_n_kwend)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_visibility)
-        v.visit(_n_kwimport)
-        v.visit(_n_kwend)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwimport)
+        v.enter_visit(_n_kwend)
     end
 end
 redef class APublicVisibility
@@ -478,7 +458,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
 
@@ -508,7 +488,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
@@ -524,12 +504,12 @@ redef class APrivateVisibility
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwprivate)
+        v.enter_visit(_n_kwprivate)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwprivate)
+        v.enter_visit(_n_kwprivate)
     end
 end
 redef class AProtectedVisibility
@@ -550,7 +530,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
@@ -566,12 +546,12 @@ redef class AProtectedVisibility
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwprotected)
+        v.enter_visit(_n_kwprotected)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwprotected)
+        v.enter_visit(_n_kwprotected)
     end
 end
 redef class AIntrudeVisibility
@@ -592,7 +572,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
@@ -608,15 +588,15 @@ redef class AIntrudeVisibility
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwintrude)
+        v.enter_visit(_n_kwintrude)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwintrude)
+        v.enter_visit(_n_kwintrude)
     end
 end
-redef class AClassdef
+redef class AStdClassdef
     redef fun n_doc=(n)
     do
         _n_doc = n
@@ -651,15 +631,15 @@ redef class AClassdef
 
     private init empty_init do end
 
-    init init_aclassdef (
-            n_doc: nullable PDoc ,
+    init init_astdclassdef (
+            n_doc: nullable ADoc ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_classkind: nullable PClasskind ,
+            n_visibility: nullable AVisibility ,
+            n_classkind: nullable AClasskind ,
             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]
+            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
@@ -680,28 +660,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
@@ -721,7 +701,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
@@ -731,7 +711,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
@@ -751,7 +731,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
@@ -763,7 +743,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
@@ -775,7 +755,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
@@ -789,58 +769,58 @@ redef class AClassdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_classkind)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_classkind)
         if _n_id != null then
-            v.visit(_n_id.as(not null))
+            v.enter_visit(_n_id.as(not null))
         end
             for n in _n_formaldefs do
-                v.visit(n)
+                v.enter_visit(n)
            end
             for n in _n_superclasses do
-                v.visit(n)
+                v.enter_visit(n)
            end
             for n in _n_propdefs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_classkind)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_classkind)
         if _n_id != null then
-            v.visit(_n_id.as(not null))
+            v.enter_visit(_n_id.as(not null))
         end
        do
            var i = _n_formaldefs.length
             while i >= 0 do
-                v.visit(_n_formaldefs[i])
+                v.enter_visit(_n_formaldefs[i])
                i = i - 1
            end
        end
        do
            var i = _n_superclasses.length
             while i >= 0 do
-                v.visit(_n_superclasses[i])
+                v.enter_visit(_n_superclasses[i])
                i = i - 1
            end
        end
        do
            var i = _n_propdefs.length
             while i >= 0 do
-                v.visit(_n_propdefs[i])
+                v.enter_visit(_n_propdefs[i])
                i = i - 1
            end
        end
@@ -851,23 +831,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,7 +861,7 @@ redef class ATopClassdef
     redef fun visit_all(v: Visitor)
     do
             for n in _n_propdefs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
@@ -890,7 +870,7 @@ redef class ATopClassdef
        do
            var i = _n_propdefs.length
             while i >= 0 do
-                v.visit(_n_propdefs[i])
+                v.enter_visit(_n_propdefs[i])
                i = i - 1
            end
        end
@@ -901,23 +881,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
@@ -931,7 +911,7 @@ redef class AMainClassdef
     redef fun visit_all(v: Visitor)
     do
             for n in _n_propdefs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
@@ -940,7 +920,7 @@ redef class AMainClassdef
        do
            var i = _n_propdefs.length
             while i >= 0 do
-                v.visit(_n_propdefs[i])
+                v.enter_visit(_n_propdefs[i])
                i = i - 1
            end
        end
@@ -964,7 +944,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
@@ -980,12 +960,12 @@ redef class AConcreteClasskind
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwclass)
+        v.enter_visit(_n_kwclass)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwclass)
+        v.enter_visit(_n_kwclass)
     end
 end
 redef class AAbstractClasskind
@@ -1014,7 +994,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,14 +1020,14 @@ redef class AAbstractClasskind
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwabstract)
-        v.visit(_n_kwclass)
+        v.enter_visit(_n_kwabstract)
+        v.enter_visit(_n_kwclass)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwabstract)
-        v.visit(_n_kwclass)
+        v.enter_visit(_n_kwabstract)
+        v.enter_visit(_n_kwclass)
     end
 end
 redef class AInterfaceClasskind
@@ -1068,7 +1048,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
@@ -1084,12 +1064,12 @@ redef class AInterfaceClasskind
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwinterface)
+        v.enter_visit(_n_kwinterface)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwinterface)
+        v.enter_visit(_n_kwinterface)
     end
 end
 redef class AUniversalClasskind
@@ -1110,7 +1090,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
@@ -1126,12 +1106,12 @@ redef class AUniversalClasskind
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwuniversal)
+        v.enter_visit(_n_kwuniversal)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwuniversal)
+        v.enter_visit(_n_kwuniversal)
     end
 end
 redef class AFormaldef
@@ -1152,7 +1132,7 @@ redef class AFormaldef
 
     init init_aformaldef (
             n_id: nullable TClassid ,
-            n_type: nullable PType 
+            n_type: nullable AType 
     )
     do
         empty_init
@@ -1164,7 +1144,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
@@ -1179,7 +1159,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
@@ -1190,17 +1170,17 @@ redef class AFormaldef
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
     end
 end
@@ -1220,7 +1200,7 @@ redef class ASuperclass
 
     init init_asuperclass (
             n_kwspecial: nullable TKwspecial ,
-            n_type: nullable PType 
+            n_type: nullable AType 
     )
     do
         empty_init
@@ -1230,7 +1210,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
@@ -1245,7 +1225,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
@@ -1256,14 +1236,14 @@ redef class ASuperclass
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwspecial)
-        v.visit(_n_type)
+        v.enter_visit(_n_kwspecial)
+        v.enter_visit(_n_type)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwspecial)
-        v.visit(_n_type)
+        v.enter_visit(_n_kwspecial)
+        v.enter_visit(_n_type)
     end
 end
 redef class AAttrPropdef
@@ -1337,16 +1317,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_doc: nullable ADoc ,
+            n_readable: nullable AAble ,
+            n_writable: nullable AAble ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
+            n_visibility: nullable AVisibility ,
             n_kwattr: nullable TKwattr ,
             n_kwvar: nullable TKwvar ,
             n_id: nullable TAttrid ,
-            n_type: nullable PType ,
-            n_expr: nullable PExpr 
+            n_type: nullable AType ,
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -1388,12 +1368,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
@@ -1403,7 +1383,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
@@ -1413,7 +1393,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
@@ -1433,7 +1413,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
@@ -1473,7 +1453,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
@@ -1483,7 +1463,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
@@ -1495,60 +1475,60 @@ redef class AAttrPropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_readable != null then
-            v.visit(_n_readable.as(not null))
+            v.enter_visit(_n_readable.as(not null))
         end
         if _n_writable != null then
-            v.visit(_n_writable.as(not null))
+            v.enter_visit(_n_writable.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
+        v.enter_visit(_n_visibility)
         if _n_kwattr != null then
-            v.visit(_n_kwattr.as(not null))
+            v.enter_visit(_n_kwattr.as(not null))
         end
         if _n_kwvar != null then
-            v.visit(_n_kwvar.as(not null))
+            v.enter_visit(_n_kwvar.as(not null))
         end
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_readable != null then
-            v.visit(_n_readable.as(not null))
+            v.enter_visit(_n_readable.as(not null))
         end
         if _n_writable != null then
-            v.visit(_n_writable.as(not null))
+            v.enter_visit(_n_writable.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
+        v.enter_visit(_n_visibility)
         if _n_kwattr != null then
-            v.visit(_n_kwattr.as(not null))
+            v.enter_visit(_n_kwattr.as(not null))
         end
         if _n_kwvar != null then
-            v.visit(_n_kwvar.as(not null))
+            v.enter_visit(_n_kwvar.as(not null))
         end
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 end
@@ -1586,11 +1566,11 @@ redef class AMethPropdef
     private init empty_init do end
 
     init init_amethpropdef (
-            n_doc: nullable PDoc ,
+            n_doc: nullable ADoc ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature 
+            n_visibility: nullable AVisibility ,
+            n_methid: nullable AMethid ,
+            n_signature: nullable ASignature 
     )
     do
         empty_init
@@ -1610,12 +1590,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
@@ -1635,7 +1615,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
@@ -1645,7 +1625,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
@@ -1655,7 +1635,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
@@ -1667,27 +1647,27 @@ redef class AMethPropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
     end
 end
 redef class ADeferredMethPropdef
@@ -1729,12 +1709,12 @@ redef class ADeferredMethPropdef
     private init empty_init do end
 
     init init_adeferredmethpropdef (
-            n_doc: nullable PDoc ,
+            n_doc: nullable ADoc ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
+            n_visibility: nullable AVisibility ,
             n_kwmeth: nullable TKwmeth ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature 
+            n_methid: nullable AMethid ,
+            n_signature: nullable ASignature 
     )
     do
         empty_init
@@ -1756,12 +1736,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
@@ -1781,7 +1761,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
@@ -1801,7 +1781,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
@@ -1811,7 +1791,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
@@ -1823,29 +1803,29 @@ redef class ADeferredMethPropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwmeth)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwmeth)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwmeth)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwmeth)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
     end
 end
 redef class AInternMethPropdef
@@ -1887,12 +1867,12 @@ redef class AInternMethPropdef
     private init empty_init do end
 
     init init_ainternmethpropdef (
-            n_doc: nullable PDoc ,
+            n_doc: nullable ADoc ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
+            n_visibility: nullable AVisibility ,
             n_kwmeth: nullable TKwmeth ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature 
+            n_methid: nullable AMethid ,
+            n_signature: nullable ASignature 
     )
     do
         empty_init
@@ -1914,12 +1894,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
@@ -1939,7 +1919,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
@@ -1959,7 +1939,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
@@ -1969,7 +1949,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
@@ -1981,29 +1961,29 @@ redef class AInternMethPropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwmeth)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwmeth)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwmeth)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwmeth)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
     end
 end
 redef class AExternMethPropdef
@@ -2052,12 +2032,12 @@ redef class AExternMethPropdef
     private init empty_init do end
 
     init init_aexternmethpropdef (
-            n_doc: nullable PDoc ,
+            n_doc: nullable ADoc ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
+            n_visibility: nullable AVisibility ,
             n_kwmeth: nullable TKwmeth ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature ,
+            n_methid: nullable AMethid ,
+            n_signature: nullable ASignature ,
             n_extern: nullable TString 
     )
     do
@@ -2084,12 +2064,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
@@ -2109,7 +2089,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
@@ -2129,7 +2109,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
@@ -2139,7 +2119,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
@@ -2161,34 +2141,34 @@ redef class AExternMethPropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwmeth)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwmeth)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
         if _n_extern != null then
-            v.visit(_n_extern.as(not null))
+            v.enter_visit(_n_extern.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwmeth)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwmeth)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
         if _n_extern != null then
-            v.visit(_n_extern.as(not null))
+            v.enter_visit(_n_extern.as(not null))
         end
     end
 end
@@ -2238,13 +2218,13 @@ redef class AConcreteMethPropdef
     private init empty_init do end
 
     init init_aconcretemethpropdef (
-            n_doc: nullable PDoc ,
+            n_doc: nullable ADoc ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
+            n_visibility: nullable AVisibility ,
             n_kwmeth: nullable TKwmeth ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature ,
-            n_block: nullable PExpr 
+            n_methid: nullable AMethid ,
+            n_signature: nullable ASignature ,
+            n_block: nullable AExpr 
     )
     do
         empty_init
@@ -2270,12 +2250,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
@@ -2295,7 +2275,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
@@ -2315,7 +2295,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
@@ -2325,7 +2305,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
@@ -2335,7 +2315,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
@@ -2347,34 +2327,34 @@ redef class AConcreteMethPropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwmeth)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwmeth)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwmeth)
-        v.visit(_n_methid)
-        v.visit(_n_signature)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwmeth)
+        v.enter_visit(_n_methid)
+        v.enter_visit(_n_signature)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 end
@@ -2426,13 +2406,13 @@ redef class AConcreteInitPropdef
     private init empty_init do end
 
     init init_aconcreteinitpropdef (
-            n_doc: nullable PDoc ,
+            n_doc: nullable ADoc ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
+            n_visibility: nullable AVisibility ,
             n_kwinit: nullable TKwinit ,
-            n_methid: nullable PMethid ,
-            n_signature: nullable PSignature ,
-            n_block: nullable PExpr 
+            n_methid: nullable AMethid ,
+            n_signature: nullable ASignature ,
+            n_block: nullable AExpr 
     )
     do
         empty_init
@@ -2460,12 +2440,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
@@ -2485,7 +2465,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
@@ -2505,7 +2485,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
@@ -2515,7 +2495,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
@@ -2525,7 +2505,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
@@ -2537,38 +2517,38 @@ redef class AConcreteInitPropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwinit)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwinit)
         if _n_methid != null then
-            v.visit(_n_methid.as(not null))
+            v.enter_visit(_n_methid.as(not null))
         end
-        v.visit(_n_signature)
+        v.enter_visit(_n_signature)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwinit)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwinit)
         if _n_methid != null then
-            v.visit(_n_methid.as(not null))
+            v.enter_visit(_n_methid.as(not null))
         end
-        v.visit(_n_signature)
+        v.enter_visit(_n_signature)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 end
@@ -2592,7 +2572,7 @@ redef class AMainMethPropdef
 
     init init_amainmethpropdef (
             n_kwredef: nullable TKwredef ,
-            n_block: nullable PExpr 
+            n_block: nullable AExpr 
     )
     do
         empty_init
@@ -2606,7 +2586,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
@@ -2621,7 +2601,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
@@ -2633,20 +2613,20 @@ redef class AMainMethPropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 end
@@ -2689,12 +2669,12 @@ redef class ATypePropdef
     private init empty_init do end
 
     init init_atypepropdef (
-            n_doc: nullable PDoc ,
+            n_doc: nullable ADoc ,
             n_kwredef: nullable TKwredef ,
-            n_visibility: nullable PVisibility ,
+            n_visibility: nullable AVisibility ,
             n_kwtype: nullable TKwtype ,
             n_id: nullable TClassid ,
-            n_type: nullable PType 
+            n_type: nullable AType 
     )
     do
         empty_init
@@ -2716,12 +2696,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
@@ -2741,7 +2721,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
@@ -2771,7 +2751,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
@@ -2783,29 +2763,29 @@ redef class ATypePropdef
     redef fun visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwtype)
-        v.visit(_n_id)
-        v.visit(_n_type)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwtype)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_type)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc.as(not null))
+            v.enter_visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_visibility)
-        v.visit(_n_kwtype)
-        v.visit(_n_id)
-        v.visit(_n_type)
+        v.enter_visit(_n_visibility)
+        v.enter_visit(_n_kwtype)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_type)
     end
 end
 redef class AReadAble
@@ -2838,7 +2818,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
@@ -2865,17 +2845,17 @@ redef class AReadAble
     redef fun visit_all(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_kwreadable)
+        v.enter_visit(_n_kwreadable)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_kwreadable)
+        v.enter_visit(_n_kwreadable)
     end
 end
 redef class AWriteAble
@@ -2908,7 +2888,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
@@ -2935,17 +2915,17 @@ redef class AWriteAble
     redef fun visit_all(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_kwwritable)
+        v.enter_visit(_n_kwwritable)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef.as(not null))
+            v.enter_visit(_n_kwredef.as(not null))
         end
-        v.visit(_n_kwwritable)
+        v.enter_visit(_n_kwwritable)
     end
 end
 redef class AIdMethid
@@ -2966,7 +2946,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
@@ -2982,12 +2962,12 @@ redef class AIdMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
     end
 end
 redef class APlusMethid
@@ -3008,7 +2988,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
@@ -3024,12 +3004,12 @@ redef class APlusMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_plus)
+        v.enter_visit(_n_plus)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_plus)
+        v.enter_visit(_n_plus)
     end
 end
 redef class AMinusMethid
@@ -3050,7 +3030,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
@@ -3066,12 +3046,12 @@ redef class AMinusMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_minus)
+        v.enter_visit(_n_minus)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_minus)
+        v.enter_visit(_n_minus)
     end
 end
 redef class AStarMethid
@@ -3092,7 +3072,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
@@ -3108,12 +3088,12 @@ redef class AStarMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_star)
+        v.enter_visit(_n_star)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_star)
+        v.enter_visit(_n_star)
     end
 end
 redef class ASlashMethid
@@ -3134,7 +3114,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
@@ -3150,12 +3130,12 @@ redef class ASlashMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_slash)
+        v.enter_visit(_n_slash)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_slash)
+        v.enter_visit(_n_slash)
     end
 end
 redef class APercentMethid
@@ -3176,7 +3156,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
@@ -3192,12 +3172,12 @@ redef class APercentMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_percent)
+        v.enter_visit(_n_percent)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_percent)
+        v.enter_visit(_n_percent)
     end
 end
 redef class AEqMethid
@@ -3218,7 +3198,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
@@ -3234,12 +3214,12 @@ redef class AEqMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_eq)
+        v.enter_visit(_n_eq)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_eq)
+        v.enter_visit(_n_eq)
     end
 end
 redef class ANeMethid
@@ -3260,7 +3240,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
@@ -3276,12 +3256,12 @@ redef class ANeMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_ne)
+        v.enter_visit(_n_ne)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_ne)
+        v.enter_visit(_n_ne)
     end
 end
 redef class ALeMethid
@@ -3302,7 +3282,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
@@ -3318,12 +3298,12 @@ redef class ALeMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_le)
+        v.enter_visit(_n_le)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_le)
+        v.enter_visit(_n_le)
     end
 end
 redef class AGeMethid
@@ -3344,7 +3324,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
@@ -3360,12 +3340,12 @@ redef class AGeMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_ge)
+        v.enter_visit(_n_ge)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_ge)
+        v.enter_visit(_n_ge)
     end
 end
 redef class ALtMethid
@@ -3386,7 +3366,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
@@ -3402,12 +3382,12 @@ redef class ALtMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_lt)
+        v.enter_visit(_n_lt)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_lt)
+        v.enter_visit(_n_lt)
     end
 end
 redef class AGtMethid
@@ -3428,7 +3408,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
@@ -3444,12 +3424,12 @@ redef class AGtMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_gt)
+        v.enter_visit(_n_gt)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_gt)
+        v.enter_visit(_n_gt)
     end
 end
 redef class ABraMethid
@@ -3478,7 +3458,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,14 +3484,14 @@ redef class ABraMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_obra)
-        v.visit(_n_cbra)
+        v.enter_visit(_n_obra)
+        v.enter_visit(_n_cbra)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_obra)
-        v.visit(_n_cbra)
+        v.enter_visit(_n_obra)
+        v.enter_visit(_n_cbra)
     end
 end
 redef class AStarshipMethid
@@ -3532,7 +3512,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
@@ -3548,12 +3528,12 @@ redef class AStarshipMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_starship)
+        v.enter_visit(_n_starship)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_starship)
+        v.enter_visit(_n_starship)
     end
 end
 redef class AAssignMethid
@@ -3582,7 +3562,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
@@ -3608,14 +3588,14 @@ redef class AAssignMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_id)
-        v.visit(_n_assign)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_id)
-        v.visit(_n_assign)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign)
     end
 end
 redef class ABraassignMethid
@@ -3652,7 +3632,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
@@ -3688,16 +3668,16 @@ redef class ABraassignMethid
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_obra)
-        v.visit(_n_cbra)
-        v.visit(_n_assign)
+        v.enter_visit(_n_obra)
+        v.enter_visit(_n_cbra)
+        v.enter_visit(_n_assign)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_obra)
-        v.visit(_n_cbra)
-        v.visit(_n_assign)
+        v.enter_visit(_n_obra)
+        v.enter_visit(_n_cbra)
+        v.enter_visit(_n_assign)
     end
 end
 redef class ASignature
@@ -3712,14 +3692,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
@@ -3728,18 +3708,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
@@ -3751,7 +3731,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
@@ -3761,7 +3741,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
@@ -3775,13 +3755,13 @@ redef class ASignature
     redef fun visit_all(v: Visitor)
     do
             for n in _n_params do
-                v.visit(n)
+                v.enter_visit(n)
            end
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
             for n in _n_closure_decls do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
@@ -3790,17 +3770,17 @@ redef class ASignature
        do
            var i = _n_params.length
             while i >= 0 do
-                v.visit(_n_params[i])
+                v.enter_visit(_n_params[i])
                i = i - 1
            end
        end
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
        do
            var i = _n_closure_decls.length
             while i >= 0 do
-                v.visit(_n_closure_decls[i])
+                v.enter_visit(_n_closure_decls[i])
                i = i - 1
            end
        end
@@ -3831,7 +3811,7 @@ redef class AParam
 
     init init_aparam (
             n_id: nullable TId ,
-            n_type: nullable PType ,
+            n_type: nullable AType ,
             n_dotdotdot: nullable TDotdotdot 
     )
     do
@@ -3848,7 +3828,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
@@ -3863,7 +3843,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
@@ -3884,23 +3864,23 @@ redef class AParam
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
         if _n_dotdotdot != null then
-            v.visit(_n_dotdotdot.as(not null))
+            v.enter_visit(_n_dotdotdot.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
         if _n_dotdotdot != null then
-            v.visit(_n_dotdotdot.as(not null))
+            v.enter_visit(_n_dotdotdot.as(not null))
         end
     end
 end
@@ -3941,8 +3921,8 @@ redef class AClosureDecl
             n_kwwith: nullable TKwwith ,
             n_kwbreak: nullable TKwbreak ,
             n_id: nullable TId ,
-            n_signature: nullable PSignature ,
-            n_expr: nullable PExpr 
+            n_signature: nullable ASignature ,
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -3962,7 +3942,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
@@ -3997,7 +3977,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
@@ -4007,7 +3987,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
@@ -4018,27 +3998,27 @@ redef class AClosureDecl
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwwith)
+        v.enter_visit(_n_kwwith)
         if _n_kwbreak != null then
-            v.visit(_n_kwbreak.as(not null))
+            v.enter_visit(_n_kwbreak.as(not null))
         end
-        v.visit(_n_id)
-        v.visit(_n_signature)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_signature)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwwith)
+        v.enter_visit(_n_kwwith)
         if _n_kwbreak != null then
-            v.visit(_n_kwbreak.as(not null))
+            v.enter_visit(_n_kwbreak.as(not null))
         end
-        v.visit(_n_id)
-        v.visit(_n_signature)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_signature)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 end
@@ -4061,7 +4041,7 @@ redef class AType
     init init_atype (
             n_kwnullable: nullable TKwnullable ,
             n_id: nullable TClassid ,
-            n_types: Collection[Object]  # Should be Collection[PType]
+            n_types: Collection[Object]  # Should be Collection[AType]
     )
     do
         empty_init
@@ -4072,13 +4052,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
@@ -4103,7 +4083,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
@@ -4117,24 +4097,24 @@ redef class AType
     redef fun visit_all(v: Visitor)
     do
         if _n_kwnullable != null then
-            v.visit(_n_kwnullable.as(not null))
+            v.enter_visit(_n_kwnullable.as(not null))
         end
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
             for n in _n_types do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_kwnullable != null then
-            v.visit(_n_kwnullable.as(not null))
+            v.enter_visit(_n_kwnullable.as(not null))
         end
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
        do
            var i = _n_types.length
             while i >= 0 do
-                v.visit(_n_types[i])
+                v.enter_visit(_n_types[i])
                i = i - 1
            end
        end
@@ -4145,23 +4125,23 @@ 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
@@ -4175,7 +4155,7 @@ redef class ABlockExpr
     redef fun visit_all(v: Visitor)
     do
             for n in _n_expr do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
@@ -4184,7 +4164,7 @@ redef class ABlockExpr
        do
            var i = _n_expr.length
             while i >= 0 do
-                v.visit(_n_expr[i])
+                v.enter_visit(_n_expr[i])
                i = i - 1
            end
        end
@@ -4228,9 +4208,9 @@ redef class AVardeclExpr
     init init_avardeclexpr (
             n_kwvar: nullable TKwvar ,
             n_id: nullable TId ,
-            n_type: nullable PType ,
+            n_type: nullable AType ,
             n_assign: nullable TAssign ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -4252,7 +4232,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
@@ -4277,7 +4257,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
@@ -4297,7 +4277,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
@@ -4308,31 +4288,31 @@ redef class AVardeclExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwvar)
-        v.visit(_n_id)
+        v.enter_visit(_n_kwvar)
+        v.enter_visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
         if _n_assign != null then
-            v.visit(_n_assign.as(not null))
+            v.enter_visit(_n_assign.as(not null))
         end
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwvar)
-        v.visit(_n_id)
+        v.enter_visit(_n_kwvar)
+        v.enter_visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type.as(not null))
+            v.enter_visit(_n_type.as(not null))
         end
         if _n_assign != null then
-            v.visit(_n_assign.as(not null))
+            v.enter_visit(_n_assign.as(not null))
         end
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 end
@@ -4354,7 +4334,7 @@ redef class AReturnExpr
 
     init init_areturnexpr (
             n_kwreturn: nullable TKwreturn ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -4366,7 +4346,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
@@ -4381,7 +4361,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,17 +4372,17 @@ redef class AReturnExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwreturn)
+        v.enter_visit(_n_kwreturn)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwreturn)
+        v.enter_visit(_n_kwreturn)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 end
@@ -4424,7 +4404,7 @@ redef class ABreakExpr
 
     init init_abreakexpr (
             n_kwbreak: nullable TKwbreak ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -4436,7 +4416,7 @@ redef class ABreakExpr
        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
@@ -4451,7 +4431,7 @@ redef class ABreakExpr
         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
@@ -4462,17 +4442,17 @@ redef class ABreakExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwbreak)
+        v.enter_visit(_n_kwbreak)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwbreak)
+        v.enter_visit(_n_kwbreak)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 end
@@ -4494,7 +4474,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
@@ -4510,12 +4490,12 @@ redef class AAbortExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwabort)
+        v.enter_visit(_n_kwabort)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwabort)
+        v.enter_visit(_n_kwabort)
     end
 end
 redef class AContinueExpr
@@ -4536,7 +4516,7 @@ redef class AContinueExpr
 
     init init_acontinueexpr (
             n_kwcontinue: nullable TKwcontinue ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -4548,7 +4528,7 @@ redef class AContinueExpr
        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
@@ -4563,7 +4543,7 @@ redef class AContinueExpr
         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
@@ -4574,17 +4554,17 @@ redef class AContinueExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwcontinue)
+        v.enter_visit(_n_kwcontinue)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwcontinue)
+        v.enter_visit(_n_kwcontinue)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 end
@@ -4606,7 +4586,7 @@ redef class ADoExpr
 
     init init_adoexpr (
             n_kwdo: nullable TKwdo ,
-            n_block: nullable PExpr 
+            n_block: nullable AExpr 
     )
     do
         empty_init
@@ -4618,7 +4598,7 @@ redef class ADoExpr
        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
@@ -4633,7 +4613,7 @@ 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
@@ -4644,17 +4624,17 @@ redef class ADoExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwdo)
+        v.enter_visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwdo)
+        v.enter_visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 end
@@ -4688,9 +4668,9 @@ redef class AIfExpr
 
     init init_aifexpr (
             n_kwif: nullable TKwif ,
-            n_expr: nullable PExpr ,
-            n_then: nullable PExpr ,
-            n_else: nullable PExpr 
+            n_expr: nullable AExpr ,
+            n_then: nullable AExpr ,
+            n_else: nullable AExpr 
     )
     do
         empty_init
@@ -4708,7 +4688,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
@@ -4723,7 +4703,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
@@ -4733,7 +4713,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
@@ -4743,7 +4723,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
@@ -4754,25 +4734,25 @@ redef class AIfExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwif)
-        v.visit(_n_expr)
+        v.enter_visit(_n_kwif)
+        v.enter_visit(_n_expr)
         if _n_then != null then
-            v.visit(_n_then.as(not null))
+            v.enter_visit(_n_then.as(not null))
         end
         if _n_else != null then
-            v.visit(_n_else.as(not null))
+            v.enter_visit(_n_else.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwif)
-        v.visit(_n_expr)
+        v.enter_visit(_n_kwif)
+        v.enter_visit(_n_expr)
         if _n_then != null then
-            v.visit(_n_then.as(not null))
+            v.enter_visit(_n_then.as(not null))
         end
         if _n_else != null then
-            v.visit(_n_else.as(not null))
+            v.enter_visit(_n_else.as(not null))
         end
     end
 end
@@ -4812,11 +4792,11 @@ redef class AIfexprExpr
 
     init init_aifexprexpr (
             n_kwif: nullable TKwif ,
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_kwthen: nullable TKwthen ,
-            n_then: nullable PExpr ,
+            n_then: nullable AExpr ,
             n_kwelse: nullable TKwelse ,
-            n_else: nullable PExpr 
+            n_else: nullable AExpr 
     )
     do
         empty_init
@@ -4834,7 +4814,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
@@ -4849,7 +4829,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
@@ -4869,7 +4849,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
@@ -4889,7 +4869,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
@@ -4900,22 +4880,22 @@ redef class AIfexprExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwif)
-        v.visit(_n_expr)
-        v.visit(_n_kwthen)
-        v.visit(_n_then)
-        v.visit(_n_kwelse)
-        v.visit(_n_else)
+        v.enter_visit(_n_kwif)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwthen)
+        v.enter_visit(_n_then)
+        v.enter_visit(_n_kwelse)
+        v.enter_visit(_n_else)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwif)
-        v.visit(_n_expr)
-        v.visit(_n_kwthen)
-        v.visit(_n_then)
-        v.visit(_n_kwelse)
-        v.visit(_n_else)
+        v.enter_visit(_n_kwif)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwthen)
+        v.enter_visit(_n_then)
+        v.enter_visit(_n_kwelse)
+        v.enter_visit(_n_else)
     end
 end
 redef class AWhileExpr
@@ -4946,9 +4926,9 @@ redef class AWhileExpr
 
     init init_awhileexpr (
             n_kwwhile: nullable TKwwhile ,
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_kwdo: nullable TKwdo ,
-            n_block: nullable PExpr 
+            n_block: nullable AExpr 
     )
     do
         empty_init
@@ -4964,7 +4944,7 @@ redef class AWhileExpr
        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
@@ -4979,7 +4959,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
@@ -4999,7 +4979,7 @@ 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
@@ -5010,21 +4990,21 @@ redef class AWhileExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwwhile)
-        v.visit(_n_expr)
-        v.visit(_n_kwdo)
+        v.enter_visit(_n_kwwhile)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwwhile)
-        v.visit(_n_expr)
-        v.visit(_n_kwdo)
+        v.enter_visit(_n_kwwhile)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 end
@@ -5062,9 +5042,9 @@ redef class AForExpr
     init init_aforexpr (
             n_kwfor: nullable TKwfor ,
             n_id: nullable TId ,
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_kwdo: nullable TKwdo ,
-            n_block: nullable PExpr 
+            n_block: nullable AExpr 
     )
     do
         empty_init
@@ -5082,7 +5062,7 @@ redef class AForExpr
        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
@@ -5107,7 +5087,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
@@ -5127,7 +5107,7 @@ 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
@@ -5138,23 +5118,23 @@ redef class AForExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwfor)
-        v.visit(_n_id)
-        v.visit(_n_expr)
-        v.visit(_n_kwdo)
+        v.enter_visit(_n_kwfor)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwfor)
-        v.visit(_n_id)
-        v.visit(_n_expr)
-        v.visit(_n_kwdo)
+        v.enter_visit(_n_kwfor)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block.as(not null))
+            v.enter_visit(_n_block.as(not null))
         end
     end
 end
@@ -5182,7 +5162,7 @@ redef class AAssertExpr
     init init_aassertexpr (
             n_kwassert: nullable TKwassert ,
             n_id: nullable TId ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -5196,7 +5176,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
@@ -5221,7 +5201,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
@@ -5232,20 +5212,20 @@ redef class AAssertExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwassert)
+        v.enter_visit(_n_kwassert)
         if _n_id != null then
-            v.visit(_n_id.as(not null))
+            v.enter_visit(_n_id.as(not null))
         end
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwassert)
+        v.enter_visit(_n_kwassert)
         if _n_id != null then
-            v.visit(_n_id.as(not null))
+            v.enter_visit(_n_id.as(not null))
         end
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
     end
 end
 redef class AOnceExpr
@@ -5264,7 +5244,7 @@ redef class AOnceExpr
 
     init init_aonceexpr (
             n_kwonce: nullable TKwonce ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -5274,7 +5254,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
@@ -5289,7 +5269,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,14 +5280,14 @@ redef class AOnceExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwonce)
-        v.visit(_n_expr)
+        v.enter_visit(_n_kwonce)
+        v.enter_visit(_n_expr)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwonce)
-        v.visit(_n_expr)
+        v.enter_visit(_n_kwonce)
+        v.enter_visit(_n_expr)
     end
 end
 redef class ASendExpr
@@ -5320,7 +5300,7 @@ redef class ASendExpr
     private init empty_init do end
 
     init init_asendexpr (
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -5328,12 +5308,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
@@ -5344,12 +5324,12 @@ redef class ASendExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
     end
 end
 redef class ABinopExpr
@@ -5367,8 +5347,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
@@ -5378,12 +5358,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
@@ -5393,7 +5373,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
@@ -5404,14 +5384,14 @@ redef class ABinopExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AOrExpr
@@ -5429,8 +5409,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
@@ -5440,12 +5420,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
@@ -5455,7 +5435,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
@@ -5466,14 +5446,14 @@ redef class AOrExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AAndExpr
@@ -5491,8 +5471,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
@@ -5502,12 +5482,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
@@ -5517,7 +5497,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
@@ -5528,14 +5508,14 @@ redef class AAndExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class ANotExpr
@@ -5554,7 +5534,7 @@ redef class ANotExpr
 
     init init_anotexpr (
             n_kwnot: nullable TKwnot ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -5564,7 +5544,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
@@ -5579,7 +5559,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
@@ -5590,14 +5570,14 @@ redef class ANotExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwnot)
-        v.visit(_n_expr)
+        v.enter_visit(_n_kwnot)
+        v.enter_visit(_n_expr)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwnot)
-        v.visit(_n_expr)
+        v.enter_visit(_n_kwnot)
+        v.enter_visit(_n_expr)
     end
 end
 redef class AEqExpr
@@ -5615,8 +5595,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
@@ -5626,12 +5606,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
@@ -5641,7 +5621,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
@@ -5652,14 +5632,14 @@ redef class AEqExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AEeExpr
@@ -5677,8 +5657,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
@@ -5688,12 +5668,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
@@ -5703,7 +5683,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
@@ -5714,14 +5694,14 @@ redef class AEeExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class ANeExpr
@@ -5739,8 +5719,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
@@ -5750,12 +5730,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
@@ -5765,7 +5745,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
@@ -5776,14 +5756,14 @@ redef class ANeExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class ALtExpr
@@ -5801,8 +5781,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
@@ -5812,12 +5792,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
@@ -5827,7 +5807,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
@@ -5838,14 +5818,14 @@ redef class ALtExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class ALeExpr
@@ -5863,8 +5843,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
@@ -5874,12 +5854,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
@@ -5889,7 +5869,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
@@ -5900,14 +5880,14 @@ redef class ALeExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AGtExpr
@@ -5925,8 +5905,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
@@ -5936,12 +5916,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
@@ -5951,7 +5931,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
@@ -5962,14 +5942,14 @@ redef class AGtExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AGeExpr
@@ -5987,8 +5967,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
@@ -5998,12 +5978,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
@@ -6013,7 +5993,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
@@ -6024,14 +6004,14 @@ redef class AGeExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AIsaExpr
@@ -6049,8 +6029,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
@@ -6060,12 +6040,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
@@ -6075,7 +6055,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
@@ -6086,14 +6066,14 @@ redef class AIsaExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_type)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_type)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_type)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_type)
     end
 end
 redef class APlusExpr
@@ -6111,8 +6091,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
@@ -6122,12 +6102,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
@@ -6137,7 +6117,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
@@ -6148,14 +6128,14 @@ redef class APlusExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AMinusExpr
@@ -6173,8 +6153,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
@@ -6184,12 +6164,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
@@ -6199,7 +6179,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
@@ -6210,14 +6190,14 @@ redef class AMinusExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AStarshipExpr
@@ -6235,8 +6215,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
@@ -6246,12 +6226,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
@@ -6261,7 +6241,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
@@ -6272,14 +6252,14 @@ redef class AStarshipExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AStarExpr
@@ -6297,8 +6277,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
@@ -6308,12 +6288,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
@@ -6323,7 +6303,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
@@ -6334,14 +6314,14 @@ redef class AStarExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class ASlashExpr
@@ -6359,8 +6339,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
@@ -6370,12 +6350,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
@@ -6385,7 +6365,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
@@ -6396,14 +6376,14 @@ redef class ASlashExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class APercentExpr
@@ -6421,8 +6401,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
@@ -6432,12 +6412,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
@@ -6447,7 +6427,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
@@ -6458,14 +6438,14 @@ redef class APercentExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AUminusExpr
@@ -6484,7 +6464,7 @@ redef class AUminusExpr
 
     init init_auminusexpr (
             n_minus: nullable TMinus ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -6494,7 +6474,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
@@ -6509,7 +6489,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
@@ -6520,14 +6500,14 @@ redef class AUminusExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_minus)
-        v.visit(_n_expr)
+        v.enter_visit(_n_minus)
+        v.enter_visit(_n_expr)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_minus)
-        v.visit(_n_expr)
+        v.enter_visit(_n_minus)
+        v.enter_visit(_n_expr)
     end
 end
 redef class ANewExpr
@@ -6553,9 +6533,9 @@ redef class ANewExpr
 
     init init_anewexpr (
             n_kwnew: nullable TKwnew ,
-            n_type: nullable PType ,
+            n_type: nullable AType ,
             n_id: nullable TId ,
-            n_args: Collection[Object]  # Should be Collection[PExpr]
+            n_args: Collection[Object]  # Should be Collection[AExpr]
     )
     do
         empty_init
@@ -6568,13 +6548,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
@@ -6589,7 +6569,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
@@ -6609,7 +6589,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
@@ -6622,27 +6602,27 @@ redef class ANewExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwnew)
-        v.visit(_n_type)
+        v.enter_visit(_n_kwnew)
+        v.enter_visit(_n_type)
         if _n_id != null then
-            v.visit(_n_id.as(not null))
+            v.enter_visit(_n_id.as(not null))
         end
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwnew)
-        v.visit(_n_type)
+        v.enter_visit(_n_kwnew)
+        v.enter_visit(_n_type)
         if _n_id != null then
-            v.visit(_n_id.as(not null))
+            v.enter_visit(_n_id.as(not null))
         end
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
@@ -6663,7 +6643,7 @@ redef class AAttrExpr
     private init empty_init do end
 
     init init_aattrexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_id: nullable TAttrid 
     )
     do
@@ -6674,12 +6654,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
@@ -6700,14 +6680,14 @@ redef class AAttrExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
     end
 end
 redef class AAttrAssignExpr
@@ -6735,10 +6715,10 @@ redef class AAttrAssignExpr
     private init empty_init do end
 
     init init_aattrassignexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_id: nullable TAttrid ,
             n_assign: nullable TAssign ,
-            n_value: nullable PExpr 
+            n_value: nullable AExpr 
     )
     do
         empty_init
@@ -6752,12 +6732,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
@@ -6787,7 +6767,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
@@ -6798,18 +6778,18 @@ redef class AAttrAssignExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
-        v.visit(_n_assign)
-        v.visit(_n_value)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign)
+        v.enter_visit(_n_value)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
-        v.visit(_n_assign)
-        v.visit(_n_value)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign)
+        v.enter_visit(_n_value)
     end
 end
 redef class AAttrReassignExpr
@@ -6837,10 +6817,10 @@ redef class AAttrReassignExpr
     private init empty_init do end
 
     init init_aattrreassignexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_id: nullable TAttrid ,
-            n_assign_op: nullable PAssignOp ,
-            n_value: nullable PExpr 
+            n_assign_op: nullable AAssignOp ,
+            n_value: nullable AExpr 
     )
     do
         empty_init
@@ -6854,12 +6834,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
@@ -6879,7 +6859,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
@@ -6889,7 +6869,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
@@ -6900,18 +6880,18 @@ redef class AAttrReassignExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
-        v.visit(_n_assign_op)
-        v.visit(_n_value)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign_op)
+        v.enter_visit(_n_value)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
-        v.visit(_n_assign_op)
-        v.visit(_n_value)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign_op)
+        v.enter_visit(_n_value)
     end
 end
 redef class ACallExpr
@@ -6929,10 +6909,10 @@ redef class ACallExpr
     private init empty_init do end
 
     init init_acallexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_id: nullable TId ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_closure_defs: Collection[Object]  # Should be Collection[PClosureDef]
+            n_args: Collection[Object] , # Should be Collection[AExpr]
+            n_closure_defs: Collection[Object]  # Should be Collection[AClosureDef]
     )
     do
         empty_init
@@ -6941,23 +6921,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
@@ -6977,7 +6957,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
@@ -6989,7 +6969,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
@@ -7002,31 +6982,31 @@ redef class ACallExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
             for n in _n_closure_defs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
        do
            var i = _n_closure_defs.length
             while i >= 0 do
-                v.visit(_n_closure_defs[i])
+                v.enter_visit(_n_closure_defs[i])
                i = i - 1
            end
        end
@@ -7057,11 +7037,11 @@ redef class ACallAssignExpr
     private init empty_init do end
 
     init init_acallassignexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_id: nullable TId ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
+            n_args: Collection[Object] , # Should be Collection[AExpr]
             n_assign: nullable TAssign ,
-            n_value: nullable PExpr 
+            n_value: nullable AExpr 
     )
     do
         empty_init
@@ -7070,7 +7050,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
@@ -7080,12 +7060,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
@@ -7105,7 +7085,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
@@ -7127,7 +7107,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
@@ -7138,28 +7118,28 @@ redef class ACallAssignExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
-        v.visit(_n_assign)
-        v.visit(_n_value)
+        v.enter_visit(_n_assign)
+        v.enter_visit(_n_value)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
-        v.visit(_n_assign)
-        v.visit(_n_value)
+        v.enter_visit(_n_assign)
+        v.enter_visit(_n_value)
     end
 end
 redef class ACallReassignExpr
@@ -7187,11 +7167,11 @@ redef class ACallReassignExpr
     private init empty_init do end
 
     init init_acallreassignexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_id: nullable TId ,
-            n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign_op: nullable PAssignOp ,
-            n_value: nullable PExpr 
+            n_args: Collection[Object] , # Should be Collection[AExpr]
+            n_assign_op: nullable AAssignOp ,
+            n_value: nullable AExpr 
     )
     do
         empty_init
@@ -7200,7 +7180,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
@@ -7210,12 +7190,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
@@ -7235,7 +7215,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
@@ -7247,7 +7227,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
@@ -7257,7 +7237,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
@@ -7268,28 +7248,28 @@ redef class ACallReassignExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
-        v.visit(_n_assign_op)
-        v.visit(_n_value)
+        v.enter_visit(_n_assign_op)
+        v.enter_visit(_n_value)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
-        v.visit(_n_assign_op)
-        v.visit(_n_value)
+        v.enter_visit(_n_assign_op)
+        v.enter_visit(_n_value)
     end
 end
 redef class ASuperExpr
@@ -7309,9 +7289,9 @@ redef class ASuperExpr
     private init empty_init do end
 
     init init_asuperexpr (
-            n_qualified: nullable PQualified ,
+            n_qualified: nullable AQualified ,
             n_kwsuper: nullable TKwsuper ,
-            n_args: Collection[Object]  # Should be Collection[PExpr]
+            n_args: Collection[Object]  # Should be Collection[AExpr]
     )
     do
         empty_init
@@ -7322,18 +7302,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
@@ -7353,7 +7333,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
@@ -7367,24 +7347,24 @@ redef class ASuperExpr
     redef fun visit_all(v: Visitor)
     do
         if _n_qualified != null then
-            v.visit(_n_qualified.as(not null))
+            v.enter_visit(_n_qualified.as(not null))
         end
-        v.visit(_n_kwsuper)
+        v.enter_visit(_n_kwsuper)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_qualified != null then
-            v.visit(_n_qualified.as(not null))
+            v.enter_visit(_n_qualified.as(not null))
         end
-        v.visit(_n_kwsuper)
+        v.enter_visit(_n_kwsuper)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
@@ -7405,9 +7385,9 @@ redef class AInitExpr
     private init empty_init do end
 
     init init_ainitexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_kwinit: nullable TKwinit ,
-            n_args: Collection[Object]  # Should be Collection[PExpr]
+            n_args: Collection[Object]  # Should be Collection[AExpr]
     )
     do
         empty_init
@@ -7416,18 +7396,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
@@ -7447,7 +7427,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
@@ -7460,21 +7440,21 @@ redef class AInitExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_kwinit)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwinit)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_kwinit)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwinit)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
@@ -7490,32 +7470,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
@@ -7525,7 +7505,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
@@ -7537,7 +7517,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
@@ -7550,29 +7530,29 @@ redef class ABraExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
             for n in _n_closure_defs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
        do
            var i = _n_closure_defs.length
             while i >= 0 do
-                v.visit(_n_closure_defs[i])
+                v.enter_visit(_n_closure_defs[i])
                i = i - 1
            end
        end
@@ -7598,17 +7578,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_expr: nullable AExpr ,
+            n_args: Collection[Object] , # Should be Collection[AExpr]
             n_assign: nullable TAssign ,
-            n_value: nullable PExpr 
+            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
@@ -7618,12 +7598,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
@@ -7633,7 +7613,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
@@ -7655,7 +7635,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
@@ -7666,26 +7646,26 @@ redef class ABraAssignExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
-        v.visit(_n_assign)
-        v.visit(_n_value)
+        v.enter_visit(_n_assign)
+        v.enter_visit(_n_value)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
-        v.visit(_n_assign)
-        v.visit(_n_value)
+        v.enter_visit(_n_assign)
+        v.enter_visit(_n_value)
     end
 end
 redef class ABraReassignExpr
@@ -7708,17 +7688,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
@@ -7728,12 +7708,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
@@ -7743,7 +7723,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
@@ -7755,7 +7735,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
@@ -7765,7 +7745,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
@@ -7776,26 +7756,26 @@ redef class ABraReassignExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
-        v.visit(_n_assign_op)
-        v.visit(_n_value)
+        v.enter_visit(_n_assign_op)
+        v.enter_visit(_n_value)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
-        v.visit(_n_assign_op)
-        v.visit(_n_value)
+        v.enter_visit(_n_assign_op)
+        v.enter_visit(_n_value)
     end
 end
 redef class AClosureCallExpr
@@ -7809,26 +7789,26 @@ redef class AClosureCallExpr
 
     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_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
@@ -7843,7 +7823,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
@@ -7855,7 +7835,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
@@ -7868,29 +7848,29 @@ redef class AClosureCallExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
             for n in _n_args do
-                v.visit(n)
+                v.enter_visit(n)
            end
             for n in _n_closure_defs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
        do
            var i = _n_args.length
             while i >= 0 do
-                v.visit(_n_args[i])
+                v.enter_visit(_n_args[i])
                i = i - 1
            end
        end
        do
            var i = _n_closure_defs.length
             while i >= 0 do
-                v.visit(_n_closure_defs[i])
+                v.enter_visit(_n_closure_defs[i])
                i = i - 1
            end
        end
@@ -7914,7 +7894,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
@@ -7930,12 +7910,12 @@ redef class AVarExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_id)
+        v.enter_visit(_n_id)
     end
 end
 redef class AVarAssignExpr
@@ -7960,7 +7940,7 @@ redef class AVarAssignExpr
     init init_avarassignexpr (
             n_id: nullable TId ,
             n_assign: nullable TAssign ,
-            n_value: nullable PExpr 
+            n_value: nullable AExpr 
     )
     do
         empty_init
@@ -7972,7 +7952,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
@@ -7997,7 +7977,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
@@ -8008,16 +7988,16 @@ redef class AVarAssignExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_id)
-        v.visit(_n_assign)
-        v.visit(_n_value)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign)
+        v.enter_visit(_n_value)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_id)
-        v.visit(_n_assign)
-        v.visit(_n_value)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign)
+        v.enter_visit(_n_value)
     end
 end
 redef class AVarReassignExpr
@@ -8041,8 +8021,8 @@ redef class AVarReassignExpr
 
     init init_avarreassignexpr (
             n_id: nullable TId ,
-            n_assign_op: nullable PAssignOp ,
-            n_value: nullable PExpr 
+            n_assign_op: nullable AAssignOp ,
+            n_value: nullable AExpr 
     )
     do
         empty_init
@@ -8054,7 +8034,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
@@ -8069,7 +8049,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
@@ -8079,7 +8059,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
@@ -8090,16 +8070,16 @@ redef class AVarReassignExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_id)
-        v.visit(_n_assign_op)
-        v.visit(_n_value)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign_op)
+        v.enter_visit(_n_value)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_id)
-        v.visit(_n_assign_op)
-        v.visit(_n_value)
+        v.enter_visit(_n_id)
+        v.enter_visit(_n_assign_op)
+        v.enter_visit(_n_value)
     end
 end
 redef class ARangeExpr
@@ -8117,8 +8097,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
@@ -8128,12 +8108,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
@@ -8143,7 +8123,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
@@ -8154,14 +8134,14 @@ redef class ARangeExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class ACrangeExpr
@@ -8179,8 +8159,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
@@ -8190,12 +8170,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
@@ -8205,7 +8185,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
@@ -8216,14 +8196,14 @@ redef class ACrangeExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AOrangeExpr
@@ -8241,8 +8221,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
@@ -8252,12 +8232,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
@@ -8267,7 +8247,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
@@ -8278,14 +8258,14 @@ redef class AOrangeExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_expr2)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
     end
 end
 redef class AArrayExpr
@@ -8293,23 +8273,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
@@ -8323,7 +8303,7 @@ redef class AArrayExpr
     redef fun visit_all(v: Visitor)
     do
             for n in _n_exprs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
@@ -8332,7 +8312,7 @@ redef class AArrayExpr
        do
            var i = _n_exprs.length
             while i >= 0 do
-                v.visit(_n_exprs[i])
+                v.enter_visit(_n_exprs[i])
                i = i - 1
            end
        end
@@ -8356,7 +8336,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
@@ -8372,12 +8352,12 @@ redef class ASelfExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwself)
+        v.enter_visit(_n_kwself)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwself)
+        v.enter_visit(_n_kwself)
     end
 end
 redef class AImplicitSelfExpr
@@ -8389,7 +8369,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
 
@@ -8419,7 +8399,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
@@ -8435,12 +8415,12 @@ redef class ATrueExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwtrue)
+        v.enter_visit(_n_kwtrue)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwtrue)
+        v.enter_visit(_n_kwtrue)
     end
 end
 redef class AFalseExpr
@@ -8461,7 +8441,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
@@ -8477,12 +8457,12 @@ redef class AFalseExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwfalse)
+        v.enter_visit(_n_kwfalse)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwfalse)
+        v.enter_visit(_n_kwfalse)
     end
 end
 redef class ANullExpr
@@ -8503,7 +8483,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
@@ -8519,12 +8499,12 @@ redef class ANullExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwnull)
+        v.enter_visit(_n_kwnull)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwnull)
+        v.enter_visit(_n_kwnull)
     end
 end
 redef class AIntExpr
@@ -8545,7 +8525,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
@@ -8561,12 +8541,12 @@ redef class AIntExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_number)
+        v.enter_visit(_n_number)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_number)
+        v.enter_visit(_n_number)
     end
 end
 redef class AFloatExpr
@@ -8587,7 +8567,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
@@ -8603,12 +8583,12 @@ redef class AFloatExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_float)
+        v.enter_visit(_n_float)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_float)
+        v.enter_visit(_n_float)
     end
 end
 redef class ACharExpr
@@ -8629,7 +8609,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
@@ -8645,12 +8625,12 @@ redef class ACharExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_char)
+        v.enter_visit(_n_char)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_char)
+        v.enter_visit(_n_char)
     end
 end
 redef class AStringExpr
@@ -8671,7 +8651,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
@@ -8687,12 +8667,12 @@ redef class AStringExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_string)
+        v.enter_visit(_n_string)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_string)
+        v.enter_visit(_n_string)
     end
 end
 redef class AStartStringExpr
@@ -8713,7 +8693,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
@@ -8729,12 +8709,12 @@ redef class AStartStringExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_string)
+        v.enter_visit(_n_string)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_string)
+        v.enter_visit(_n_string)
     end
 end
 redef class AMidStringExpr
@@ -8755,7 +8735,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
@@ -8771,12 +8751,12 @@ redef class AMidStringExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_string)
+        v.enter_visit(_n_string)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_string)
+        v.enter_visit(_n_string)
     end
 end
 redef class AEndStringExpr
@@ -8797,7 +8777,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
@@ -8813,12 +8793,12 @@ redef class AEndStringExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_string)
+        v.enter_visit(_n_string)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_string)
+        v.enter_visit(_n_string)
     end
 end
 redef class ASuperstringExpr
@@ -8826,23 +8806,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
@@ -8856,7 +8836,7 @@ redef class ASuperstringExpr
     redef fun visit_all(v: Visitor)
     do
             for n in _n_exprs do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
@@ -8865,7 +8845,7 @@ redef class ASuperstringExpr
        do
            var i = _n_exprs.length
             while i >= 0 do
-                v.visit(_n_exprs[i])
+                v.enter_visit(_n_exprs[i])
                i = i - 1
            end
        end
@@ -8881,7 +8861,7 @@ redef class AParExpr
     private init empty_init do end
 
     init init_aparexpr (
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -8889,12 +8869,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
@@ -8905,12 +8885,12 @@ redef class AParExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
+        v.enter_visit(_n_expr)
     end
 end
 redef class AAsCastExpr
@@ -8933,9 +8913,9 @@ redef class AAsCastExpr
     private init empty_init do end
 
     init init_aascastexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_kwas: nullable TKwas ,
-            n_type: nullable PType 
+            n_type: nullable AType 
     )
     do
         empty_init
@@ -8947,12 +8927,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
@@ -8972,7 +8952,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
@@ -8983,16 +8963,16 @@ redef class AAsCastExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_kwas)
-        v.visit(_n_type)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwas)
+        v.enter_visit(_n_type)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_kwas)
-        v.visit(_n_type)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwas)
+        v.enter_visit(_n_type)
     end
 end
 redef class AAsNotnullExpr
@@ -9020,7 +9000,7 @@ redef class AAsNotnullExpr
     private init empty_init do end
 
     init init_aasnotnullexpr (
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_kwas: nullable TKwas ,
             n_kwnot: nullable TKwnot ,
             n_kwnull: nullable TKwnull 
@@ -9037,12 +9017,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
@@ -9083,18 +9063,18 @@ redef class AAsNotnullExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_kwas)
-        v.visit(_n_kwnot)
-        v.visit(_n_kwnull)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwas)
+        v.enter_visit(_n_kwnot)
+        v.enter_visit(_n_kwnull)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_expr)
-        v.visit(_n_kwas)
-        v.visit(_n_kwnot)
-        v.visit(_n_kwnull)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_kwas)
+        v.enter_visit(_n_kwnot)
+        v.enter_visit(_n_kwnull)
     end
 end
 redef class AIssetAttrExpr
@@ -9118,7 +9098,7 @@ redef class AIssetAttrExpr
 
     init init_aissetattrexpr (
             n_kwisset: nullable TKwisset ,
-            n_expr: nullable PExpr ,
+            n_expr: nullable AExpr ,
             n_id: nullable TAttrid 
     )
     do
@@ -9131,7 +9111,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
@@ -9146,7 +9126,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
@@ -9167,16 +9147,16 @@ redef class AIssetAttrExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwisset)
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_kwisset)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwisset)
-        v.visit(_n_expr)
-        v.visit(_n_id)
+        v.enter_visit(_n_kwisset)
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_id)
     end
 end
 redef class APlusAssignOp
@@ -9197,7 +9177,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
@@ -9213,12 +9193,12 @@ redef class APlusAssignOp
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_pluseq)
+        v.enter_visit(_n_pluseq)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_pluseq)
+        v.enter_visit(_n_pluseq)
     end
 end
 redef class AMinusAssignOp
@@ -9239,7 +9219,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
@@ -9255,12 +9235,12 @@ redef class AMinusAssignOp
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_minuseq)
+        v.enter_visit(_n_minuseq)
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_minuseq)
+        v.enter_visit(_n_minuseq)
     end
 end
 redef class AClosureDef
@@ -9288,7 +9268,7 @@ redef class AClosureDef
             n_kwwith: nullable TKwwith ,
             n_id: Collection[Object] , # Should be Collection[TId]
             n_kwdo: nullable TKwdo ,
-            n_expr: nullable PExpr 
+            n_expr: nullable AExpr 
     )
     do
         empty_init
@@ -9307,7 +9287,7 @@ redef class AClosureDef
        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
@@ -9344,7 +9324,7 @@ 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
@@ -9355,29 +9335,29 @@ redef class AClosureDef
 
     redef fun visit_all(v: Visitor)
     do
-        v.visit(_n_kwwith)
+        v.enter_visit(_n_kwwith)
             for n in _n_id do
-                v.visit(n)
+                v.enter_visit(n)
            end
-        v.visit(_n_kwdo)
+        v.enter_visit(_n_kwdo)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.visit(_n_kwwith)
+        v.enter_visit(_n_kwwith)
        do
            var i = _n_id.length
             while i >= 0 do
-                v.visit(_n_id[i])
+                v.enter_visit(_n_id[i])
                i = i - 1
            end
        end
-        v.visit(_n_kwdo)
+        v.enter_visit(_n_kwdo)
         if _n_expr != null then
-            v.visit(_n_expr.as(not null))
+            v.enter_visit(_n_expr.as(not null))
         end
     end
 end
@@ -9409,7 +9389,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
@@ -9438,10 +9418,10 @@ redef class AQualified
     redef fun visit_all(v: Visitor)
     do
             for n in _n_id do
-                v.visit(n)
+                v.enter_visit(n)
            end
         if _n_classid != null then
-            v.visit(_n_classid.as(not null))
+            v.enter_visit(_n_classid.as(not null))
         end
     end
 
@@ -9450,12 +9430,12 @@ redef class AQualified
        do
            var i = _n_id.length
             while i >= 0 do
-                v.visit(_n_id[i])
+                v.enter_visit(_n_id[i])
                i = i - 1
            end
        end
         if _n_classid != null then
-            v.visit(_n_classid.as(not null))
+            v.enter_visit(_n_classid.as(not null))
         end
     end
 end
@@ -9475,7 +9455,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
@@ -9494,7 +9474,7 @@ redef class ADoc
     redef fun visit_all(v: Visitor)
     do
             for n in _n_comment do
-                v.visit(n)
+                v.enter_visit(n)
            end
     end
 
@@ -9503,7 +9483,7 @@ redef class ADoc
        do
            var i = _n_comment.length
             while i >= 0 do
-                v.visit(_n_comment[i])
+                v.enter_visit(_n_comment[i])
                i = i - 1
            end
        end
@@ -9512,20 +9492,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
@@ -9536,14 +9516,14 @@ redef class Start
     redef fun visit_all(v: Visitor)
     do
         if _n_base != null then
-            v.visit(_n_base.as(not null))
+            v.enter_visit(_n_base.as(not null))
         end
     end
 
     redef fun visit_all_reverse(v: Visitor)
     do
         if _n_base != null then
-            v.visit(_n_base.as(not null))
+            v.enter_visit(_n_base.as(not null))
         end
     end
 end