anchor.diff:  local_compare(T1, T2) ->
       Remote = fun(get_bucket, {L, B}) ->
                        get_bucket(L, B, T2);
  +                (start_exchange_level, {_Level, _Buckets}) ->
  +                     ok;
  +                (start_exchange_segments, _Segments) ->
  +                     ok;
                   (key_hashes, Segment) ->
                        [{_, KeyHashes2}] = key_hashes(T2, Segment),
                        KeyHashes2
                end,
  -    compare(T1, Remote).
  +    AccFun = fun(Keys, KeyAcc) ->
  +                     Keys ++ KeyAcc
  +             end,
  +    compare2(T1, Remote, AccFun, []).
   
   -spec compare(hashtree(), remote_fun()) -> [keydiff()].
   compare(Tree, Remote) ->
  
positive.code:             IS
      end.
  
  -spec compare(integer(), integer(), hashtree(), remote_fun(), acc_fun(X), X) -> X.
  compare(Level, Bucket, Tree, Remote, AccFun, KeyAcc) when Level == Tree#state.levels+1 ->
      Keys = compare_segments(Bucket, Tree, Remote),
  
negative.code:     Remote = fun(get_bucket, {L, B}) ->
                       Other ! {get_bucket, self(), L, B},
                       receive {remote, X} -> X end;
                  (start_exchange_level, {_Level, _Buckets}) ->
                       ok;
                  (start_exchange_segments, _Segments) ->
                       ok;
                  (key_hashes, Segment) ->
                       Other ! {key_hashes, self(), Segment},
                       receive {remote, X} -> X end
  