pub trait Transformer { type IR; // Required method fn transform(&mut self, root: &mut Self::IR); }
transform will change ir node inplace usually transform will have multiple passes