anchor.diff:  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)),
       Args = [ot_utype_elem(A) || A <- get_content(argtypes, Es)],
  
positive.code:     ot_nonempty_list(Es);
  ot_type([#xmlElement{name = tuple, content = Es}]) ->
      ot_tuple(Es);
  ot_type([#xmlElement{name = 'fun', content = Es}]) ->
      ot_fun(Es);
  ot_type([#xmlElement{name = record, content = Es}]) ->
  
negative.code:     ["#{"] ++ seq(fun t_utype_elem/1, Es, ["}"]).
  
  t_map_field([K,V]) ->
      t_utype_elem(K) ++ [" => "] ++ t_utype_elem(V).
  
  t_record(E, Es) ->
      Name = ["#"] ++ t_type(get_elem(atom, Es)),
  