method vinst = function
    | Set((Var v,NoOffset),e,loc) ->
        begin try
          let voff = VarinfoHashtbl.find cursor_to_offset v in
          (* At this point, [e] must be an integer whose destruction through
           * [destruct_integer] does not return None.
           *)

          let eoff = match destruct_integer e with
            | None -> assert false
            | Some(v2,Some e) ->
                begin try
                  let voff2 = VarinfoHashtbl.find cursor_to_offset v2 in
                  new_exp(BinOp(PlusA,
                                new_exp (Lval(Var voff2,NoOffset)),
                                e,
                                almost_integer_type))
                with Not_found -> e end
            | Some(v2,None->
                begin try
                  let voff2 = VarinfoHashtbl.find cursor_to_offset v2 in
                  new_exp (Lval(Var voff2,NoOffset))
                with Not_found -> constant_expr 0L end
          in
          ChangeDoChildrenPost
            ([Set((Var voff,NoOffset),eoff,loc)], fun x -> x)
        with Not_found -> DoChildren end
    | _ -> DoChildren