anchor.diff:      t_tuple(Es);
   t_type([#xmlElement{name = 'fun', content = Es}]) ->
       t_fun(Es);
  -t_type([#xmlElement{name = abstype, content = Es}]) ->
  -    t_abstype(Es);
  +t_type([E = #xmlElement{name = abstype, content = Es}]) ->
  +    t_abstype(E, Es);
   t_type([#xmlElement{name = union, content = Es}]) ->
       t_union(Es);
   t_type([#xmlElement{name = record, content = Es}]) ->
  
positive.code:          end,
      [KElem ++ AS ++ VElem].
  
  t_abstype(Es) ->
      Name = t_name(get_elem(erlangName, Es)),
      [Name, "("] ++ seq(fun t_utype_elem/1, get_elem(type, Es), [")"]).
  
  t_union(Es) ->
      seq(fun t_utype_elem/1, Es, " | ", []).
  
negative.code:     end.
  
  t_utype([E]) ->
      flatten_type(t_utype_elem(E)).
  
  %% Make sure see also are top elements of lists.
  flatten_type(T) ->
      [case is_integer(E) of
           true -> [E];
           false -> E
       end || E <- lists:flatten(T)].
  
  t_utype_elem(E=#xmlElement{content = Es}) ->
      case get_attrval(name, E) of
  