package Ġcom . j tran sc . ast Ċ Ċ fun ĠAst Method . transform In place ( transform : ĠBuilder Base .( Ast Element ) Ġ-> ĠAst Element ) Ġ{ Ċ ĉ if Ġ( this . body Ġ!= Ġnull ) Ġ{ Ċĉ ĉ val Ġbase Ġ= ĠBuilder Base ( this . types ) Ċĉ ĉ object Ġ: ĠAst Visitor () Ġ{ Ċĉĉ ĉ override Ġfun Ġvisit ( stm : ĠAst St m ?) Ġ{ Ċĉĉĉ ĉ super . visit ( stm ) Ċĉĉĉ ĉ if Ġ( stm Ġ!= Ġnull ) Ġ{ Ċĉĉĉĉ ĉ val Ġtransformed St m Ġ= Ġbase . transform ( stm ) Ċĉĉĉĉ ĉ if Ġ( stm Ġ!= Ġtransformed St m ) Ġ{ Ċĉĉĉĉĉ ĉ stm . replace With ( transformed St m Ġas ĠAst St m ) Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉ ĉ } ĊĊĉĉ ĉ override Ġfun Ġvisit ( expr : ĠAst Expr ?) Ġ{ Ċĉĉĉ ĉ super . visit ( expr ) Ċĉĉĉ ĉ if Ġ( expr Ġ!= Ġnull ) Ġ{ Ċĉĉĉĉ ĉ val Ġtransformed Expr Ġ= Ġbase . transform ( expr ) Ċĉĉĉĉ ĉ if Ġ( expr Ġ!= Ġtransformed Expr ) Ġ{ Ċĉĉĉĉĉ ĉ expr . replace With ( transformed Expr Ġas ĠAst Expr ) Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ }. visit ( this . body !! ) Ċ ĉ } Ċ } Ċ