let map_expr f = function
    ILexpCoerce( t, n ) -> ILexpCoerce( t, f n ) 
  | ILexpConstant _ as i -> i
  | ILexpBinop( o, n1, n2 ) -> ILexpBinop( o, f n1, f n2 )
  | ILexpUnaryop( o, n ) -> ILexpUnaryop( o, f n )
  | ILexpInvoke( lv, l ) -> ILexpInvoke( map_lvalue f lv, List.map f l )
  | ILexpAddress( lv, l ) -> ILexpAddress( map_lvalue f lv, l )
  | ILexpArgument _ as i -> i
  | ILexpIdent n -> ILexpIdent (f n)