anchor.diff:      dict:find(map_key_clean(K),Used).
   
   %% Be explicit instead of using set_kanno(K,[])
  -map_key_clean(#k_literal{val=V}) -> {k_literal,V};
  -map_key_clean(#k_int{val=V})     -> {k_int,V};
  -map_key_clean(#k_float{val=V})   -> {k_float,V};
  -map_key_clean(#k_atom{val=V})    -> {k_atom,V};
  -map_key_clean(#k_nil{})          -> k_nil.
  +map_key_clean(#k_var{name=V})    -> {var,V};
  +map_key_clean(#k_literal{val=V}) -> {lit,V};
  +map_key_clean(#k_int{val=V})     -> {lit,V};
  +map_key_clean(#k_float{val=V})   -> {lit,V};
  +map_key_clean(#k_atom{val=V})    -> {lit,V};
  +map_key_clean(#k_nil{})          -> {lit,[]}.
   
   
   %% call_type(Module, Function, Arity) -> call | bif | apply | error.
  
positive.code: 		    {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)
      end.
  
  %% ubody_used_vars(Expr, State) -> [UsedVar]
  
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{}) -> {[],[]};
  