anchor.diff:  top_hash(State) ->
       get_bucket(1, 0, State).
   
  --spec local_compare(hashtree(), hashtree()) -> [keydiff()].
  -local_compare(T1, T2) ->
  -    Remote = fun(get_bucket, {L, B}) ->
  -                     get_bucket(L, B, T2);
  -                (key_hashes, Segment) ->
  -                     [{_, KeyHashes2}] = key_hashes(T2, Segment),
  -                     KeyHashes2
  -             end,
  -    compare(T1, Remote).
  -
  --spec compare(hashtree(), remote_fun()) -> [keydiff()].
  -compare(Tree, Remote) ->
  -    compare(Tree, Remote, fun(Keys, KeyAcc) ->
  -                                  Keys ++ KeyAcc
  -                          end).
  -
  --spec compare(hashtree(), remote_fun(), acc_fun(X)) -> X.
  -compare(Tree, Remote, AccFun) ->
  -    compare(1, 0, Tree, Remote, AccFun, []).
  +compare(Tree, Remote, AccFun, Acc) ->
  +    compare(1, 0, Tree, Remote, AccFun, Acc).
   
   -spec levels(hashtree()) -> pos_integer().
   levels(#state{levels=L}) ->
  
positive.code: 
  -type keydiff() :: {missing | remote_missing | different, binary()}.
  
  -type remote_fun() :: fun((get_bucket | key_hashes,
                             {integer(), integer()}) -> any()).
  
  -type acc_fun(Acc) :: fun(([keydiff()], Acc) -> Acc).
  
  
negative.code: %%% Experiments
  %%%===================================================================
  
  -ifdef(TEST).
  
  run_local() ->
      run_local(10000).
  run_local(N) ->
  