anchor.diff:  		    {set_kanno(S, []),U,T,Fs}
   	    end;
   	#k_map{op=exact,es=Es} ->
  -	    Keys = [begin
  -			#k_map_pair{key=#k_literal{val=Key}} = Pair,
  -			Key
  -		    end || Pair <- Es],
  -	    %% multiple keys may have the same name
  -	    %% do not use ordsets
  -	    lists:sort(fun(A,B) -> erts_internal:cmp_term(A,B) < 0 end, Keys)
  +	    lists:sort(fun(A,B) ->
  +			%% on the form K :: {'lit' | 'var', term()}
  +			%% lit < var as intended
  +			erts_internal:cmp_term(A,B) < 0
  +		end, [map_key_clean(Key) || #k_map_pair{key=Key} <- Es])
       end.
   
   %% ubody_used_vars(Expr, State) -> [UsedVar]
  
positive.code:     Pairs0 = [{Op,K,V} || #c_map_pair{op=#c_literal{val=Op},key=K,val=V} <- Ces],
      {Pairs,Esp,St1} = foldr(fun
  	    ({Op,K0,V0}, {Ops,Espi,Sti0}) when Op =:= assoc; Op =:= exact ->
  		{K,[],Sti1} = expr(K0, Sub, Sti0),
  		{V,Ep,Sti2} = atomic(V0, Sub, Sti1),
  		{[{Op,K,V}|Ops],Ep ++ Espi,Sti2}
  	end, {[],[],St0}, Pairs0),
  
      case map_group_pairs(Pairs) of
  
negative.code: %% pat_vars(Pattern) -> {[UsedVarName],[NewVarName]}.
  %%  Return variables in a pattern.  All variables are new variables
  %%  except those in the size field of binary segments.
  %%  and map_pair keys
  
  pat_vars(#k_var{name=N}) -> {[],[N]};
  %%pat_vars(#k_char{}) -> {[],[]};
  