+redef class AForExpr
+ init init_aforexpr (
+ n_kwfor: nullable TKwfor,
+ n_ids: Collection[Object], # Should be Collection[TId]
+ n_expr: nullable AExpr,
+ n_kwdo: nullable TKwdo,
+ n_block: nullable AExpr,
+ n_label: nullable ALabel
+ )
+ do
+ _n_kwfor = n_kwfor.as(not null)
+ n_kwfor.parent = self
+ self.n_ids.unsafe_add_all(n_ids)
+ _n_expr = n_expr.as(not null)
+ n_expr.parent = self
+ _n_kwdo = n_kwdo.as(not null)
+ n_kwdo.parent = self
+ _n_block = n_block
+ if n_block != null then n_block.parent = self
+ _n_label = n_label
+ if n_label != null then n_label.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_kwfor == old_child then
+ n_kwfor = new_child.as(TKwfor)
+ return
+ end
+ if n_ids.replace_child(old_child, new_child) then return
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ if _n_kwdo == old_child then
+ n_kwdo = new_child.as(TKwdo)
+ return
+ end
+ if _n_block == old_child then
+ n_block = new_child.as(nullable AExpr)
+ return
+ end
+ if _n_label == old_child then
+ n_label = new_child.as(nullable ALabel)
+ return
+ end
+ end
+
+ redef fun n_kwfor=(node)
+ do
+ _n_kwfor = node
+ node.parent = self
+ end
+ redef fun n_expr=(node)
+ do
+ _n_expr = node
+ node.parent = self
+ end
+ redef fun n_kwdo=(node)
+ do
+ _n_kwdo = node
+ node.parent = self
+ end
+ redef fun n_block=(node)
+ do
+ _n_block = node
+ if node != null then node.parent = self
+ end
+ redef fun n_label=(node)
+ do
+ _n_label = node
+ if node != null then node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_kwfor)
+ n_ids.visit_all(v)
+ v.enter_visit(_n_expr)
+ v.enter_visit(_n_kwdo)
+ v.enter_visit(_n_block)
+ v.enter_visit(_n_label)
+ end
+end
+redef class AAssertExpr
+ init init_aassertexpr (
+ n_kwassert: nullable TKwassert,
+ n_id: nullable TId,
+ n_expr: nullable AExpr,
+ n_else: nullable AExpr
+ )
+ do
+ _n_kwassert = n_kwassert.as(not null)
+ n_kwassert.parent = self
+ _n_id = n_id
+ if n_id != null then n_id.parent = self
+ _n_expr = n_expr.as(not null)
+ n_expr.parent = self
+ _n_else = n_else
+ if n_else != null then n_else.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_kwassert == old_child then
+ n_kwassert = new_child.as(TKwassert)
+ return
+ end
+ if _n_id == old_child then
+ n_id = new_child.as(nullable TId)
+ return
+ end
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ if _n_else == old_child then
+ n_else = new_child.as(nullable AExpr)
+ return
+ end
+ end
+
+ redef fun n_kwassert=(node)
+ do
+ _n_kwassert = node
+ node.parent = self
+ end
+ redef fun n_id=(node)
+ do
+ _n_id = node
+ if node != null then node.parent = self
+ end
+ redef fun n_expr=(node)
+ do
+ _n_expr = node
+ node.parent = self
+ end
+ redef fun n_else=(node)
+ do
+ _n_else = node
+ if node != null then node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_kwassert)
+ v.enter_visit(_n_id)
+ v.enter_visit(_n_expr)
+ v.enter_visit(_n_else)
+ end
+end
+redef class AOnceExpr
+ init init_aonceexpr (
+ n_kwonce: nullable TKwonce,
+ n_expr: nullable AExpr
+ )
+ do
+ _n_kwonce = n_kwonce.as(not null)
+ n_kwonce.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_kwonce == old_child then
+ n_kwonce = new_child.as(TKwonce)
+ return
+ end
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ end
+
+ redef fun n_kwonce=(node)
+ do
+ _n_kwonce = 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
+ v.enter_visit(_n_kwonce)
+ v.enter_visit(_n_expr)
+ end
+end
+redef class ASendExpr
+ init init_asendexpr (
+ n_expr: nullable AExpr
+ )
+ do
+ _n_expr = n_expr.as(not null)
+ n_expr.parent = self
+ end