anchor.diff:  	4 => number, 18446744073709551629 => wat},
   
       M1 = maps:remove("hi", M0),
  -    [4,18446744073709551629,int,<<"key">>] = maps:keys(M1),
  -    [number,wat,3,<<"value">>]             = maps:values(M1),
  +    true = is_members([4,18446744073709551629,int,<<"key">>],maps:keys(M1)),
  +    true = is_members([number,wat,3,<<"value">>],maps:values(M1)),
   
       M2 = maps:remove(int, M1),
  -    [4,18446744073709551629,<<"key">>] = maps:keys(M2),
  -    [number,wat,<<"value">>]           = maps:values(M2),
  +    true = is_members([4,18446744073709551629,<<"key">>],maps:keys(M2)),
  +    true = is_members([number,wat,<<"value">>],maps:values(M2)),
   
       M3 = maps:remove(<<"key">>, M2),
  -    [4,18446744073709551629] = maps:keys(M3),
  -    [number,wat]             = maps:values(M3),
  +    true = is_members([4,18446744073709551629],maps:keys(M3)),
  +    true = is_members([number,wat],maps:values(M3)),
   
       M4 = maps:remove(18446744073709551629, M3),
  -    [4]      = maps:keys(M4),
  -    [number] = maps:values(M4),
  +    true = is_members([4],maps:keys(M4)),
  +    true = is_members([number],maps:values(M4)),
   
       M5 = maps:remove(4, M4),
       [] = maps:keys(M5),
  
positive.code: t_bif_map_keys(Config) when is_list(Config) ->
      [] = maps:keys(#{}),
  
      [1,2,3,4,5] = maps:keys(#{ 1 => a, 2 => b, 3 => c, 4 => d, 5 => e}),
      [1,2,3,4,5] = maps:keys(#{ 4 => d, 5 => e, 1 => a, 2 => b, 3 => c}),
  
      % values in key order: [4,int,"hi",<<"key">>]
      M1 = #{ "hi" => "hello", int => 3, <<"key">> => <<"value">>, 4 => number},
      [4,int,"hi",<<"key">>] = maps:keys(M1),
  
      %% error case
      {'EXIT',{badarg,[{maps,keys,_,_}|_]}} = (catch maps:keys(1 bsl 65 + 3)),
  
negative.code:     {'EXIT',{badarg,[{maps,put,_,_}|_]}} = (catch maps:put(1,a,atom)),
      {'EXIT',{badarg,[{maps,put,_,_}|_]}} = (catch maps:put(1,a,[])),
      {'EXIT',{badarg,[{maps,put,_,_}|_]}} = (catch maps:put(1,a,<<>>)),
      ok.
  
  is_members([],_) -> true;
  is_members([K|Ks],Ls) ->
      lists:member(K,Ls) andalso is_members(Ks,Ls).
  
  
  t_bif_map_update(Config) when is_list(Config) ->
      M0 = #{ "hi" => "hello", int => 3, <<"key">> => <<"value">>,
  	4 => number, 18446744073709551629 => wat},
  
      #{ "hi" := "hello again", int := 3, <<"key">> := <<"value">>,
  	4 := number, 18446744073709551629 := wat} = maps:update("hi", "hello again", M0),
  
      #{ "hi" := "hello", int := 1337, <<"key">> := <<"value">>,
  	4 := number, 18446744073709551629 := wat} = maps:update(int, 1337, M0),
  
      #{ "hi" := "hello", int := 3, <<"key">> := <<"new value">>,
  	4 := number, 18446744073709551629 := wat} = maps:update(<<"key">>, <<"new value">>, M0),
  
      #{ "hi" := "hello", int := 3, <<"key">> := <<"value">>,
  	4 := integer, 18446744073709551629 := wat} = maps:update(4, integer, M0),
  
      #{ "hi" := "hello", int := 3, <<"key">> := <<"value">>,
  	4 := number, 18446744073709551629 := wazzup} = maps:update(18446744073709551629, wazzup, M0),
  
      %% error case
      {'EXIT',{badarg,[{maps,update,_,_}|_]}} = (catch maps:update(1,none,{})),
      {'EXIT',{badarg,[{maps,update,_,_}|_]}} = (catch maps:update(1,none,<<"value">>)),
      {'EXIT',{badarg,[{maps,update,_,_}|_]}} = (catch maps:update(5,none,M0)),
  
      ok.
  
  t_bif_map_remove(Config) when is_list(Config) ->
      0  = erlang:map_size(maps:remove(some_key, #{})),
  