let rec update phi current poffset =
    match poffset with
      | [] -> phi current
      | poff::m ->
          let v = Lookup.get_offset current poff in
          let r = update phi v m in
          begin
            match poff with
              | Lookup.Ofield f ->
                  F.wrap (D.upd_field (F.unwrap current) f r)
              | Lookup.Oindex (i,_obj) ->
                  F.wrap (D.upd_index (F.unwrap current) i r)
          end