let iter f = function
| Ttrue | Tfalse | Tint _ | Treal _ | Tvar _ -> ()
| Tprim(_,ts) | Tcall(_,ts) -> List.iter f ts
| Tgetfield(a,_) -> f a
| Tsetfield(a,_,b) | Taccess(a,b) | Tlet(_,a,b) -> f a ; f b
| Tupdate(a,b,c) | Tif(a,b,c) -> f a ; f b ; f c