anchor.diff:  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}} ->
  -      flat_format("~w..~w", [FromVal, ToVal]);
  -    _ -> flat_format("Badly formed type ~w",[Type])
  +      erl_types_flat_fmt:flat_format("~w..~w", [FromVal, ToVal]);
  +    _ -> erl_types_flat_fmt:flat_format("Badly formed type ~w",[Type])
     end;
   t_form_to_string({type, _L, record, [{atom, _, Name}]}) ->
  -  flat_format("#~w{}", [Name]);
  +  erl_types_flat_fmt:flat_format("#~w{}", [Name]);
   t_form_to_string({type, _L, record, [{atom, _, Name}|Fields]}) ->
     FieldString = string:join(t_form_to_string_list(Fields), ","),
  -  flat_format("#~w{~s}", [Name, FieldString]);
  +  erl_types_flat_fmt:flat_format("#~w{~s}", [Name, FieldString]);
   t_form_to_string({type, _L, field_type, [{atom, _, Name}, Type]}) ->
  -  flat_format("~w::~s", [Name, t_form_to_string(Type)]);
  +  erl_types_flat_fmt:flat_format("~w::~s", [Name, t_form_to_string(Type)]);
   t_form_to_string({type, _L, term, []}) -> "term()";
   t_form_to_string({type, _L, timeout, []}) -> "timeout()";
   t_form_to_string({type, _L, tuple, any}) -> "tuple()";
  
positive.code: t_form_to_string({ann_type, _L, [Var, Type]}) ->
    t_form_to_string(Var) ++ "::" ++ t_form_to_string(Type);
  t_form_to_string({paren_type, _L, [Type]}) ->
    flat_format("(~s)", [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:~w", [Mod, Name]) ++ ArgString;
  t_form_to_string({type, _L, arity, []}) -> "arity()";
  t_form_to_string({type, _L, binary, []}) -> "binary()";
  t_form_to_string({type, _L, binary, [Base, Unit]} = Type) ->
  
negative.code:           %% erlang:error({illegal_list, ?nonempty_list(Contents, Termination)})
            ok
        end,
        F:text("nonempty_maybe_improper_list()");
      _ ->
        case t_is_subtype(t_nil(), Termination) of
  	true ->
  	  F:concat( F:text("nonempty_maybe_improper_list("),
  		    ContentString,
  		    F:text(","),
  		    t_to_string(F, Termination, RecDict),
  		    F:text(")") );
  	false ->
  	  F:concat( F:text("nonempty_improper_list("),
  		    ContentString,
  		    F:text(","), t_to_string(F, Termination, RecDict),
  		    F:text(")") )
        end
    end;
  t_to_string(F, ?list(Contents, Termination, ?unknown_qual), RecDict) ->
    ContentString = t_to_string(F, Contents, RecDict),
    case Termination of
      ?nil ->
        case Contents of
  	?char -> F:text("string()");
  	_ -> F:concat(F:text("["), ContentString, F:text("]"))
        end;
      ?any ->
        %% Just a safety check.      
  