anchor.diff:  t_form_to_string({type, _L, record, [{atom, _, Name}]}) ->
     flat_format("#~tw{}", [Name]);
   t_form_to_string({type, _L, record, [{atom, _, Name}|Fields]}) ->
  -  FieldString = string:join(t_form_to_string_list(Fields), ","),
  +  FieldString = flat_join(t_form_to_string_list(Fields), ","),
     flat_format("#~tw{~ts}", [Name, FieldString]);
   t_form_to_string({type, _L, field_type, [{atom, _, Name}, Type]}) ->
     flat_format("~tw::~ts", [Name, t_form_to_string(Type)]);
  
positive.code: t_form_to_string({paren_type, _L, [Type]}) ->
    flat_format("(~ts)", [t_form_to_string(Type)]);
  t_form_to_string({remote_type, _L, [{atom, _, Mod}, {atom, _, Name}, Args]}) ->
    ArgString = "(" ++ string:join(t_form_to_string_list(Args), ",") ++ ")",
    flat_format("~w:~tw", [Mod, Name]) ++ ArgString;
  t_form_to_string({type, _L, arity, []}) -> "arity()";
  t_form_to_string({type, _L, binary, []}) -> "binary()";
  
negative.code:   "[" ++ t_form_to_string(Type) ++ ",...]";
  t_form_to_string({type, _L, nonempty_string, []}) -> "nonempty_string()";
  t_form_to_string({type, _L, product, Elements}) ->
    "<" ++ flat_join(t_form_to_string_list(Elements), ",") ++ ">";
  t_form_to_string({type, _L, range, [From, To]} = Type) ->
    case {erl_eval:partial_eval(From), erl_eval:partial_eval(To)} of
      {{integer, _, FromVal}, {integer, _, ToVal}} ->
  