anchor.diff:  %%--------------------------------------------------------------------
   encode(BString) ->
       case BString of
  -	{string, String} ->
  -	    {ok, encode_string(String)};
  -	{integer, Integer} ->
  -	    {ok, encode_integer(Integer)};
  -	{list, Items} ->
  -	    EncodedItems = lists:map(fun (I) ->
  -					     {ok, Item} = encode(I),
  -					     Item
  -				     end, Items),
  -	    {ok, encode_list(EncodedItems)};
  -	{dict, Items} ->
  -	    EncodedItems = encode_dict_items(Items),
  -	    {ok, encode_dict(EncodedItems)};
  -	_ ->
  -	    {error, "Not a bencoded structure"}
  +	{string, String} -> encode_string(String);
  +	{integer, Integer} -> encode_integer(Integer);
  +	{list, Items} -> encode_list([encode(I) || I <- Items]);
  +	{dict, Items} -> encode_dict(encode_dict_items(Items))
       end.
   
   %%--------------------------------------------------------------------
  
positive.code: encode_dict_items([]) ->
      [];
  encode_dict_items([{I1, I2} | Rest]) ->
      {ok, I} = encode(I1),
      {ok, J} = encode(I2),
      [I, J | encode_dict_items(Rest)].
  
  decode_b([]) ->
  
negative.code: 
  decode_integer(String) ->
      {IntegerPart, RestPart} = lists:splitwith(charPred($e), String),
      {Int, _} = string:to_integer(IntegerPart),
      {{integer, Int}, tl(RestPart)}.
  
  decode_list(String) ->
      {ItemTree, Rest} = decode_list_items(String, []),
      {{list, ItemTree}, Rest}.
  
  decode_list_items([], Accum) -> {lists:reverse(Accum), []};
  decode_list_items(Items, Accum) ->
      case decode_b(Items) of
  	{end_of_data, Rest} ->
  	    {lists:reverse(Accum), Rest};
  	{I, Rest} -> decode_list_items(Rest, [I | Accum])
      end.
  
  