anchor.diff:    try t_to_string(t_from_form(T))
     catch throw:{error, _} -> atom_to_list(Name) ++ "()"
     end;
  -t_form_to_string({type, _L, binary, [X,Y]} = Type) ->
  -  case {erl_eval:partial_eval(X), erl_eval:partial_eval(Y)} of
  -    {{integer, _, XVal}, {integer, _, YVal}} ->
  -      case YVal of
  -	0 ->
  -	  case XVal of
  -	    0 -> "<<>>";
  -	    _ -> io_lib:format("<<_:~w>>", [XVal])
  -	  end
  -      end;
  -    _ -> io_lib:format("Bad formed type ~w",[Type])
  -  end;
   t_form_to_string({type, _L, Name, List}) -> 
     io_lib:format("~w(~s)",
   		[Name, string:join(t_form_to_string_list(List), ",")]).
  
positive.code: t_form_to_string_list([H|T], Acc) ->
    t_form_to_string_list(T, [t_form_to_string(H)|Acc]);
  t_form_to_string_list([], Acc) ->
    lists:reverse(Acc).  
    
  %%=============================================================================
  %% 
  %% Utilities
  
negative.code:     _ ->
        set_to_string(Set)
    end;
  t_to_string(?bitstr(0, 0), _RecDict) ->
    "<<>>";
  t_to_string(?bitstr(8, 0), _RecDict) ->
    "binary()";
  t_to_string(?bitstr(0, B), _RecDict) ->
    lists:flatten(io_lib:format("<<_:~w>>", [B]));
  t_to_string(?bitstr(U, 0), _RecDict) ->
    lists:flatten(io_lib:format("<<_:_*~w>>", [U]));
  t_to_string(?bitstr(U, B), _RecDict) ->
    lists:flatten(io_lib:format("<<_:~w,_:_*~w>>", [B, U]));
  t_to_string(?function(?any, ?any), _RecDict) ->
    "fun()";
  t_to_string(?function(?any, Range), RecDict) ->
  