anchor.diff:  	C -> C
       end;
   
  -cmp(M1, M2, Exact) -> %when is_hashmap(M1) and is_hashmap(M2)
  -    case {erlang:is_hashmap(M1), erlang:is_hashmap(M2)} of
  -	{true, true} -> cmp_hashmaps(M1, M2, Exact);
  -	_ -> cmp_others(M1, M2, Exact)
  -    end.
  -
  -cmp_hashmaps(M1, M2, Exact) ->
  -    case {hashmap:size(M1),hashmap:size(M2)} of
  +cmp(M1, M2, Exact) when is_map(M1) andalso is_map(M2) ->
  +    cmp_maps(M1,M2,Exact);
  +cmp(M1, M2, Exact) ->
  +    cmp_others(M1, M2, Exact).
  +
  +cmp_maps(M1, M2, Exact) ->
  +    case {maps:size(M1),maps:size(M2)} of
   	{_S,_S} ->
  -	    {K1,V1} = lists:unzip(term_sort(hashmap:to_list(M1))),
  -	    {K2,V2} = lists:unzip(term_sort(hashmap:to_list(M2))),
  +	    {K1,V1} = lists:unzip(term_sort(maps:to_list(M1))),
  +	    {K2,V2} = lists:unzip(term_sort(maps:to_list(M2))),
   
   	    case cmp(K1, K2, true) of
   		0 -> cmp(V1, V2, Exact);
  
positive.code:     ?CHECK(M2 == M2, [M2]).
  
  
  maps_lessthan(MapMod, M1, M2) ->
    case {MapMod:size(M1),MapMod:size(M2)} of
        {_S,_S} ->
  	  {K1,V1} = lists:unzip(term_sort(MapMod:to_list(M1))),
  	  {K2,V2} = lists:unzip(term_sort(MapMod:to_list(M2))),
  
  	  case erts_internal:cmp_term(K1,K2) of
  	      -1 -> true;
  
negative.code:     Seed = erlang:now(),
      io:format("seed = ~p\n", [Seed]),
      random:seed(Seed),
      repeat(100, fun(_) -> float_int_compare() end, []),
      repeat(100, fun(_) -> recursive_compare() end, []),
      ok.
  
  float_int_compare() ->
      Terms = numeric_keys(3),
      %%io:format("Keys to use: ~p\n", [Terms]),
      Pairs = lists:map(fun(K) -> list_to_tuple([{K,V} || V <- Terms]) end, Terms),
      lists:foreach(fun(Size) ->
  			  MapGen = fun() -> map_gen(list_to_tuple(Pairs), Size) end,
  			  repeat(100, fun do_compare/1, [MapGen, MapGen])
  		  end,
  		  lists:seq(1,length(Terms))),
      ok.
  