+ v.enter_visit(_n_op)
+ end
+end
+redef class APercentAssignOp
+ init init_apercentassignop (
+ n_op: nullable TPercenteq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TPercenteq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class AStarstarAssignOp
+ init init_astarstarassignop (
+ n_op: nullable TStarstareq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TStarstareq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class APipeAssignOp
+ init init_apipeassignop (
+ n_op: nullable TPipeeq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TPipeeq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class ACaretAssignOp
+ init init_acaretassignop (
+ n_op: nullable TCareteq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TCareteq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class AAmpAssignOp
+ init init_aampassignop (
+ n_op: nullable TAmpeq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TAmpeq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class ALlAssignOp
+ init init_allassignop (
+ n_op: nullable TLleq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TLleq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class AGgAssignOp
+ init init_aggassignop (
+ n_op: nullable TGgeq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TGgeq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class AForGroup
+ init init_aforgroup (
+ n_ids: Collection[Object], # Should be Collection[TId]
+ n_kwin: nullable TKwin,
+ n_expr: nullable AExpr
+ )
+ do
+ self.n_ids.unsafe_add_all(n_ids)
+ _n_kwin = n_kwin.as(not null)
+ n_kwin.parent = self
+ _n_expr = n_expr.as(not null)
+ n_expr.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if n_ids.replace_child(old_child, new_child) then return
+ if _n_kwin == old_child then
+ n_kwin = new_child.as(TKwin)
+ return
+ end
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ end
+
+ redef fun n_kwin=(node)
+ do
+ _n_kwin = node
+ node.parent = self
+ end
+ redef fun n_expr=(node)
+ do
+ _n_expr = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ n_ids.visit_all(v)
+ v.enter_visit(_n_kwin)
+ v.enter_visit(_n_expr)