anchor.diff:  t_tuple(Es) ->
       ["{"] ++ seq(fun t_utype_elem/1, Es, ["}"]).
   
  -t_map() ->
  -    ["map()"].
  +t_map(Es) ->
  +    ["#{"] ++ seq(fun t_utype_elem/1, Es, ["}"]).
  +
  +t_map_field([K,V]) ->
  +    [t_utype_elem(K) ++ " => " ++ t_utype_elem(V)].
   
   t_fun(Es) ->
       ["("] ++ seq(fun t_utype_elem/1, get_content(argtypes, Es),
  
positive.code:     t_nonempty_list(Es);
  t_type([#xmlElement{name = tuple, content = Es}]) ->
      t_tuple(Es);
  t_type([#xmlElement{name = map}]) ->
      t_map();
  t_type([#xmlElement{name = 'fun', content = Es}]) ->
      ["fun("] ++ t_fun(Es) ++ [")"];
  t_type([E = #xmlElement{name = record, content = Es}]) ->
  
negative.code: 
  ot_tuple(Es) ->
      {type,0,tuple,[ot_utype_elem(E) || E <- Es]}.
  
  ot_map(Es) ->
      {type,0,map,[ot_utype_elem(E) || E <- Es]}.
  
  ot_map_field(Es) ->
      {type,0,map_field_assoc,[ot_utype_elem(E) || E <- Es]}.
  
  ot_fun(Es) ->
      Range = ot_utype(get_elem(type, Es)),
  