anchor.diff:      {'EXIT',{badarg,_}} = (catch #{}#{a:=1}),
       Empty = #{},
       {'EXIT',{badarg,_}} = (catch Empty#{a:=1}),
  +    ok.
  +
  +t_update_exact_large(Config) when is_list(Config) ->
  +    M0 = id(#{ 10=>a0,20=>b0,30=>"c0","40"=>"d0",<<"50">>=>"e0",{["00"]}=>"10",
  +               11=>a1,21=>b1,31=>"c1","41"=>"d1",<<"51">>=>"e1",{["01"]}=>"11",
  +               12=>a2,22=>b2,32=>"c2","42"=>"d2",<<"52">>=>"e2",{["02"]}=>"12",
  +               13=>a3,23=>b3,33=>"c3","43"=>"d3",<<"53">>=>"e3",{["03"]}=>"13",
  +               14=>a4,24=>b4,34=>"c4","44"=>"d4",<<"54">>=>"e4",{["04"]}=>"14",
  +
  +               15=>a5,25=>b5,35=>"c5","45"=>"d5",<<"55">>=>"e5",{["05"]}=>"15",
  +               16=>a6,26=>b6,36=>"c6","46"=>"d6",<<"56">>=>"e6",{["06"]}=>"16",
  +               17=>a7,27=>b7,37=>"c7","47"=>"d7",<<"57">>=>"e7",{["07"]}=>"17",
  +               18=>a8,28=>b8,38=>"c8","48"=>"d8",<<"58">>=>"e8",{["08"]}=>"18",
  +               19=>a9,29=>b9,39=>"c9","49"=>"d9",<<"59">>=>"e9",{["09"]}=>"19",
  +
  +               10.0=>fa0,20.0=>fb0,30.0=>"fc0",
  +               11.0=>fa1,21.0=>fb1,31.0=>"fc1",
  +               12.0=>fa2,22.0=>fb2,32.0=>"fc2",
  +               13.0=>fa3,23.0=>fb3,33.0=>"fc3",
  +               14.0=>fa4,24.0=>fb4,34.0=>"fc4",
  +
  +               15.0=>fa5,25.0=>fb5,35.0=>"fc5",
  +               16.0=>fa6,26.0=>fb6,36.0=>"fc6",
  +               17.0=>fa7,27.0=>fb7,37.0=>"fc7",
  +               18.0=>fa8,28.0=>fb8,38.0=>"fc8",
  +               19.0=>fa9,29.0=>fb9,39.0=>"fc9",
  +
  +               #{ one => small, map => key } => "small map key 1",
  +               #{ second => small, map => key } => "small map key 2",
  +               #{ third => small, map => key } => "small map key 3",
  +
  +               #{ 10=>a0,20=>b0,30=>"c0","40"=>"d0",<<"50">>=>"e0",{["00"]}=>"10",
  +                  11=>a1,21=>b1,31=>"c1","41"=>"d1",<<"51">>=>"e1",{["01"]}=>"11",
  +                  12=>a2,22=>b2,32=>"c2","42"=>"d2",<<"52">>=>"e2",{["02"]}=>"12",
  +                  13=>a3,23=>b3,33=>"c3","43"=>"d3",<<"53">>=>"e3",{["03"]}=>"13",
  +                  14=>a4,24=>b4,34=>"c4","44"=>"d4",<<"54">>=>"e4",{["04"]}=>"14",
  +
  +                  15=>a5,25=>b5,35=>"c5","45"=>"d5",<<"55">>=>"e5",{["05"]}=>"15",
  +                  16=>a6,26=>b6,36=>"c6","46"=>"d6",<<"56">>=>"e6",{["06"]}=>"16",
  +                  17=>a7,27=>b7,37=>"c7","47"=>"d7",<<"57">>=>"e7",{["07"]}=>"17",
  +                  18=>a8,28=>b8,38=>"c8","48"=>"d8",<<"58">>=>"e8",{["08"]}=>"18",
  +                  19=>a9,29=>b9,39=>"c9","49"=>"d9",<<"59">>=>"e9",{["09"]}=>"19" } => "large map key 1",
  +
  +               #{ 10=>a0,20=>b0,30=>"c0","40"=>"d0",<<"50">>=>"e0",{["00"]}=>"10",
  +                  11=>a1,21=>b1,31=>"c1","41"=>"d1",<<"51">>=>"e1",{["01"]}=>"11",
  +                  12=>a2,22=>b2,32=>"c2","42"=>"d2",<<"52">>=>"e2",{["02"]}=>"12",
  +                  13=>a3,23=>b3,33=>"c3","43"=>"d3",<<"53">>=>"e3",{["03"]}=>"13",
  +                  14=>a4,24=>b4,34=>"c4","44"=>"d4",<<"54">>=>"e4",{["04"]}=>"14",
  +
  +                  15=>a5,25=>b5,35=>"c5","45"=>"d5",<<"55">>=>"e5",{["05"]}=>"15",
  +                  k16=>a6,k26=>b6,k36=>"c6","46"=>"d6",<<"56">>=>"e6",{["06"]}=>"16",
  +                  17=>a7,27=>b7,37=>"c7","47"=>"d7",<<"57">>=>"e7",{["07"]}=>"17",
  +                  18=>a8,28=>b8,38=>"c8","48"=>"d8",<<"58">>=>"e8",{["08"]}=>"18",
  +                  19=>a9,29=>b9,39=>"c9","49"=>"d9",<<"59">>=>"e9",{["09"]}=>"19" } => "large map key 2" }),
  +
  +
  +    M1 = M0#{10:=42,<<"55">>:=100,10.0:=[a,b,c]},
  +    #{ 10:=42,<<"55">>:=100,{["05"]}:="15",10.0:=[a,b,c],
  +       #{ 10=>a0,20=>b0,30=>"c0","40"=>"d0",<<"50">>=>"e0",{["00"]}=>"10",
  +          11=>a1,21=>b1,31=>"c1","41"=>"d1",<<"51">>=>"e1",{["01"]}=>"11",
  +          12=>a2,22=>b2,32=>"c2","42"=>"d2",<<"52">>=>"e2",{["02"]}=>"12",
  +          13=>a3,23=>b3,33=>"c3","43"=>"d3",<<"53">>=>"e3",{["03"]}=>"13",
  +          14=>a4,24=>b4,34=>"c4","44"=>"d4",<<"54">>=>"e4",{["04"]}=>"14",
  +
  +          15=>a5,25=>b5,35=>"c5","45"=>"d5",<<"55">>=>"e5",{["05"]}=>"15",
  +          16=>a6,26=>b6,36=>"c6","46"=>"d6",<<"56">>=>"e6",{["06"]}=>"16",
  +          17=>a7,27=>b7,37=>"c7","47"=>"d7",<<"57">>=>"e7",{["07"]}=>"17",
  +          18=>a8,28=>b8,38=>"c8","48"=>"d8",<<"58">>=>"e8",{["08"]}=>"18",
  +          19=>a9,29=>b9,39=>"c9","49"=>"d9",<<"59">>=>"e9",{["09"]}=>"19" } := "large map key 1" } = M1,
  +
  +    M1 = M0#{10:=wrong,10=>42,<<"55">>=>wrong,<<"55">>:=100,10.0:=[a,b,c]},
  +
  +    M2 = M0#{13.0:=new},
  +    #{10:=a0,20:=b0,13.0:=new} = M2,
  +    M2 = M0#{13.0=>wrong,13.0:=new},
  +
  +    %% Errors cases.
  +    {'EXIT',{badarg,_}} = (catch M0#{nonexisting:=val}),
  +    {'EXIT',{badarg,_}} = (catch M0#{1.0:=v,1.0=>v2}),
  +    {'EXIT',{badarg,_}} = (catch M0#{42.0:=v,42:=v2}),
  +    {'EXIT',{badarg,_}} = (catch M0#{42=>v1,42.0:=v2,42:=v3}),
  +
       ok.
   
   t_update_values(Config) when is_list(Config) ->
  
positive.code: 	]),
      ok.
  
  loop_update_literals_x_q(Map, []) -> Map;
  loop_update_literals_x_q(Map, [{X,Q}|Vs]) ->
      loop_update_literals_x_q(Map#{q=>Q,x=>X},Vs).
  
  % test map updates with matching
  t_match_and_update_literals(Config) when is_list(Config) ->
      Map = #{x=>0,y=>"untouched",z=>"also untouched",q=>1},
      #{x:=16,q:=21,y:="untouched",z:="also untouched"} = loop_match_and_update_literals_x_q(Map, [
  	    {1,2},{3,4},{5,6},{7,8}
  	]),
  
negative.code: 
  -export([
  	%% literals
  	t_build_and_match_literals/1, t_build_and_match_literals_large/1,
  	t_update_literals/1, t_update_literals_large/1,
          t_match_and_update_literals/1, t_match_and_update_literals_large/1,
  	t_update_map_expressions/1,
  	t_update_assoc/1, t_update_assoc_large/1,
          t_update_exact/1, t_update_exact_large/1,
  	t_guard_bifs/1, t_guard_sequence/1, t_guard_update/1,
  	t_guard_receive/1, t_guard_fun/1,
  	t_list_comprehension/1,
  