anchor.diff:  binrev(L, T) ->
       list_to_binary(lists:reverse(L, T)).
   
  --spec limit_term(term(), non_neg_integer()) -> term().
  +-spec limit_term(term(), depth()) -> term().
   
   %% The intention is to mimic the depth limitation of io_lib:write()
   %% and io_lib_pretty:print(). The leaves ('...') should never be
   %% seen when printed with the same depth. Bitstrings are never
   %% truncated, which is OK as long as they are not sent to other nodes.
  -limit_term(Term, Depth) ->
  +limit_term(Term, Depth) when is_integer(Depth), Depth >= -1 ->
       try test_limit(Term, Depth) of
           ok -> Term
       catch
  
positive.code:        true ->
  	    {stop,Data,eof}
      end;
  collect_chars(start,Data,_,N) when is_list(Data) ->
      collect_chars_list([], N, Data);
  collect_chars(start, eof, _,_) ->
      {stop,eof,eof};
  collect_chars({binary,Stack,_N}, eof, _,_) ->
      {stop,binrev(Stack),eof};
  collect_chars({binary,Stack,N}, Data,unicode, _) ->
      {Size,Npos} = count_and_find_utf8(Data,N),
      if Size > N ->
  	    {B1,B2} = split_binary(Data, Npos),
  
negative.code: 	true -> true;
  	false ->
  	    case Cs0 of
  		[C|Cs] when is_integer(C), C >= $a, C =< $z ->
  		    not name_chars(Cs);
  		[C|Cs] when is_integer(C), C >= $ß, C =< $ÿ, C =/= $÷ ->
  		    not name_chars(Cs);
  		[C|_] when is_integer(C) -> true;
                  [] -> true
  	    end
      end.
  
  name_chars([C|Cs]) when is_integer(C) ->
      case name_char(C) of
  	true -> name_chars(Cs);
  	false -> false
  