anchor.diff:      Ref = make_ref(),
       Pid ! {list_bucket, Bucket, self(), Ref},
       receive {list_bucket_response, Result, Ref} -> Result end.
  +
  +is_empty(#state { pid=Pid }) ->
  +    Ref = make_ref(),
  +    Pid ! {is_empty, self(), Ref},
  +    receive {is_empty_response, Result, Ref} -> Result end.
  +
  +fold(#state{ pid=Pid }, Fun0, Acc) ->
  +    Ref = make_ref(),
  +    Pid ! {fold, Fun0, Acc, self(), Ref},
  +    receive {fold_response, Result, Ref} -> Result end.
  +
  +drop(#state{ pid=Pid }) ->
  +    Ref = make_ref(),
  +    Pid ! {drop, self(), Ref},
  +    receive {drop_response, Result, Ref} -> Result end.
       
   tree_loop(Tree) ->
       receive
  
positive.code:                    srv_list_bucket(Tree, Bucket), Ref},
              tree_loop(Tree);
  
          {stop, Pid, Ref} ->
              Pid ! {stop_response, ok, Ref}
      end.
  
negative.code: srv_list_bucket(Tree, Bucket) ->
      [ Key || {B, Key} <- gb_trees:keys(Tree), B == Bucket ].
  
  srv_fold(Tree, Fun0, Acc) ->
      Iter0 = gb_trees:iterator(Tree),
      srv_fold1(gb_trees:next(Iter0), Fun0, Acc).
  
  srv_fold1(none, _Fun0, Acc) ->
      Acc;
  srv_fold1({K,V,Iter}, Fun0, Acc) ->
      srv_fold1(gb_trees:next(Iter), Fun0, Fun0(K,V,Acc)).
  
  
  %%
  %% Test
  