method vterm t =
    match t.term_node with
      | Told t -> 
          let l =  (LogicLabel "Old")  in
          let old_label = self#change_label l in
          let new_t = {t with term_node = Ttypeof t} in
            Cil.ChangeDoChildrenPost (new_t, self#restore_term old_label)
      | Tat (t, l) -> 
          let old_label = self#change_label l in
          let new_t = {t with term_node = Ttypeof t} in
            Cil.ChangeDoChildrenPost (new_t, self#restore_term old_label)
      | TAddrOf (h, _) | TLval (h, _) | TStartOf (h, _)  ->
          let old_label = current_label in 
          let at_label = match h with 
            | TResult _ -> Some (LogicLabel "Post")
            | _ -> old_label
          in
            current_label <- None;
          let post t = 
            current_label <- old_label;
            match at_label with
            | Some label -> {t with term_node = Tat (t, label)} 
            | None -> t
          in Cil.ChangeDoChildrenPost (t, post)
      | _ -> Cil.DoChildren