+ if _n_id == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TId
+ _n_id = new_child
+ else
+ abort
+ end
+ return
+ end
+ for i in [0.._n_args.length[ do
+ if _n_args[i] == old_child then
+ if new_child != null then
+ assert new_child isa AExpr
+ _n_args[i] = new_child
+ new_child.parent = self
+ else
+ _n_args.remove_at(i)
+ end
+ return
+ end
+ end
+ 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 AClosureDef
+ _n_closure_defs[i] = new_child
+ new_child.parent = self
+ else
+ _n_closure_defs.remove_at(i)
+ end
+ return
+ end