method vbehavior b =
    let lval lv = expand lv (typeOfLval lv) locUnknown in
    let term t = match t.term_node with
      | TLval tlv ->
          let lv,env =
            !Db.Properties.Interp.force_term_lval_to_lval tlv
          in
          let lvlist = lval lv in
          let tslvlist =
            List.map (!Db.Properties.Interp.force_back_lval_to_term_lval env)
              lvlist
          in
          List.map (fun
                      tslv ->
                        Logic_const.term ~loc:t.term_loc (TLval tslv)
                          t.term_type
                   ) tslvlist
      | Tempty_set -> [ t ]
          (* most of the case below are still to do*)
      | TStartOf _
      | TConst _
      | TCastE _
      | Tat _
      | TAddrOf _
      | Tapp _
      | Trange _
      | Tunion _
      | Tinter _
      | Tcomprehension _
      | Told _
      | Tif _
      | Tnull -> [ t ]
        (* those cases can not appear as assigns *)
      | TSizeOf _ | TSizeOfE _ | TSizeOfStr _ | TAlignOf _ | TAlignOfE _
      | Tlambda _ | TDataCons _ | Tbase_addr _ | TBinOp _ | TUnOp _
      | Tblock_length _ | TCoerce _ | TCoerceE _ | TUpdate _
      | Ttypeof _ | Ttype _ -> assert false
    in
    let zone = function
      | Location idts ->
          List.map (fun ts -> Location { idts with it_content = ts })
            (term idts.it_content)
      | Nothing -> [ Nothing ]
    in
    let assign (z,froms) =
      let zl = zone z in
      let froms = List.flatten (List.map zone froms) in
      List.map (fun z -> z, froms) zl
    in
    b.b_assigns <- List.flatten (List.map assign b.b_assigns);
    DoChildren