anchor.diff:  update({set,[D],[S],move}, Ts) ->
       tdb_copy(S, D, Ts);
   update({set,[D],[{integer,I},Reg],{bif,element,_}}, Ts0) ->
  -    tdb_update([{Reg,{tuple,I,[]}},{D,kill}], Ts0);
  +    tdb_update([{Reg,{tuple,min_size,I,[]}},{D,kill}], Ts0);
   update({set,[D],[_Index,Reg],{bif,element,_}}, Ts0) ->
  -    tdb_update([{Reg,{tuple,0,[]}},{D,kill}], Ts0);
  +    tdb_update([{Reg,{tuple,min_size,0,[]}},{D,kill}], Ts0);
   update({set,[D],Args,{bif,N,_}}, Ts0) ->
       Ar = length(Args),
       BoolOp = erl_internal:new_type_test(N, Ar) orelse
  
positive.code: %%  Updates a type database.  If a 'kill' operation is given, the type
  %%  information for that register will be removed from the database.
  %%  A kill operation takes precedence over other operations for the same
  %%  register (i.e. [{{x,0},kill},{{x,0},{tuple,5,[]}}] means that the
  %%  the existing type information, if any, will be discarded, and the
  %%  the '{tuple,5,[]}' information ignored.
  %%
  %%  If NewInfo information is given and there exists information about
  %%  the register, the old and new type information will be merged.
  %%  For instance, {tuple,5,_} and {tuple,10,_} will be merged to produce
  %%  {tuple,10,_}.
  
  tdb_update(Uis0, Ts0) ->
      Uis1 = filter(fun ({{x,_},_Op}) -> true;
  
negative.code: update({test,is_float,_Fail,[Src]}, Ts0) ->
      tdb_update([{Src,float}], Ts0);
  update({test,test_arity,_Fail,[Src,Arity]}, Ts0) ->
      tdb_update([{Src,{tuple,exact_size,Arity,[]}}], Ts0);
  update({test,is_map,_Fail,[Src]}, Ts0) ->
      tdb_update([{Src,map}], Ts0);
  update({get_map_elements,_,Src,{list,Elems0}}, Ts0) ->
  