anchor.diff:  	      lists:seq(1, 2000)).
   
   verify_atom_data(AtomData) ->
  -    lists:foreach(fun ({Atom, AtomTxt}) ->
  -			  AtomTxt = atom_to_list(Atom)
  +    lists:foreach(fun ({Atom, AtomTxt}) when is_atom(Atom) ->
  +			  AtomTxt = atom_to_list(Atom);
  +		      ({PPR, AtomTxt}) ->
  +			  % Pid, Port, or Ref
  +			  AtomTxt = atom_to_list(node(PPR))
   		  end,
   		  AtomData).
   
  -uc_atup(ATxt) ->
  -    {string_to_atom(ATxt), ATxt}.
  +uc_atom_tup(ATxt) ->
  +    Atom = string_to_atom(ATxt),
  +    ATxt = atom_to_list(Atom),
  +    {Atom, ATxt}.
  +
  +uc_pid_tup(ATxt) ->
  +    ATxtExt = string_to_atom_ext(ATxt),
  +    Pid = mk_pid({ATxtExt, 1}, 4711,17),
  +    true = is_pid(Pid),
  +    Atom = node(Pid),
  +    true = is_atom(Atom),
  +    ATxt = atom_to_list(Atom),
  +    {Pid, ATxt}.
  +
  +uc_port_tup(ATxt) ->
  +    ATxtExt = string_to_atom_ext(ATxt),
  +    Port = mk_port({ATxtExt, 2}, 4711),
  +    true = is_port(Port),
  +    Atom = node(Port),
  +    true = is_atom(Atom),
  +    ATxt = atom_to_list(Atom),
  +    {Port, ATxt}.
  +
  +uc_ref_tup(ATxt) ->
  +    ATxtExt = string_to_atom_ext(ATxt),
  +    Ref = mk_ref({ATxtExt, 3}, [4711,17, 4711]),
  +    true = is_reference(Ref),
  +    Atom = node(Ref),
  +    true = is_atom(Atom),
  +    ATxt = atom_to_list(Atom),
  +    {Ref, ATxt}.
  +
   
   unicode_atom_data() ->
  -    [uc_atup(lists:seq(16#1f600, 16#1f600+254)),
  -     uc_atup(lists:seq(16#1f600, 16#1f600+63)),
  -     uc_atup(lists:seq(0, 254)),
  -     uc_atup(lists:seq(100, 163)),
  -     uc_atup(lists:seq(200, 354)),
  -     uc_atup(lists:seq(200, 263)),
  -     uc_atup(lists:seq(2000, 2254)),
  -     uc_atup(lists:seq(2000, 2063)),
  -     uc_atup(lists:seq(65500, 65754)),
  -     uc_atup(lists:seq(65500, 65563))
  +    [uc_pid_tup(lists:seq(16#1f600, 16#1f600+249) ++ "@host"),
  +     uc_pid_tup(lists:seq(16#1f600, 16#1f600+30) ++ "@host"),
  +     uc_port_tup(lists:seq(16#1f600, 16#1f600+249) ++ "@host"),
  +     uc_port_tup(lists:seq(16#1f600, 16#1f600+30) ++ "@host"),
  +     uc_ref_tup(lists:seq(16#1f600, 16#1f600+249) ++ "@host"),
  +     uc_ref_tup(lists:seq(16#1f600, 16#1f600+30) ++ "@host"),
  +     uc_atom_tup(lists:seq(16#1f600, 16#1f600+254)),
  +     uc_atom_tup(lists:seq(16#1f600, 16#1f600+63)),
  +     uc_atom_tup(lists:seq(0, 254)),
  +     uc_atom_tup(lists:seq(100, 163)),
  +     uc_atom_tup(lists:seq(200, 354)),
  +     uc_atom_tup(lists:seq(200, 263)),
  +     uc_atom_tup(lists:seq(2000, 2254)),
  +     uc_atom_tup(lists:seq(2000, 2063)),
  +     uc_atom_tup(lists:seq(65500, 65754)),
  +     uc_atom_tup(lists:seq(65500, 65563))
        | lists:map(fun (N) ->
  -			 uc_atup(lists:seq(64000+N, 64254+N))
  +			 uc_atom_tup(lists:seq(64000+N, 64254+N))
   		 end,
   		 lists:seq(1, 2000))].
   
  
positive.code:     Fun(),
      repeat(Fun, N-1).
  
  string_to_atom(String) ->
      Utf8List = string_to_utf8_list(String),
      Len = length(Utf8List),
      TagLen = case Len < 256 of
  		 true -> [119, Len];
  		 false -> [118, Len bsr 8, Len band 16#ff]
  	     end,
      binary_to_term(list_to_binary([131, TagLen, Utf8List])).
  
  string_to_utf8_list([]) ->
      [];
  
negative.code: %%
  
  -module(distribution_SUITE).
  -compile(r15).
  
  -define(VERSION_MAGIC,       131).
  
  -define(ATOM_EXT,            100).
  -define(REFERENCE_EXT,       101).
  -define(PORT_EXT,            102).
  -define(PID_EXT,             103).
  -define(NEW_REFERENCE_EXT,   114).
  -define(ATOM_UTF8_EXT,       118).
  -define(SMALL_ATOM_UTF8_EXT, 119).
  
  %% Tests distribution and the tcp driver.
  
  