anchor.diff:  close(#dmerkle{file=File}) ->
     block_server:stop(File).
   
  +scan_for_empty(Tree = #dmerkle{root=Root}) ->
  +  scan_for_empty(Tree, Root).
  +
   %%====================================================================
   %% Internal functions
   %%====================================================================
  +
  +scan_for_empty(Tree = #dmerkle{file=File,block=Block}, Node = #node{children=Children,keys=Keys}) ->
  +  if
  +    length(Keys) == 0 -> io:format("node was empty: ~p", [Node]);
  +    true -> noop
  +  end,
  +  lists:foreach(fun({_, ChldPtr}) -> scan_for_empty(Tree, read(File, ChldPtr, Block)) end, Children);
  +  
  +scan_for_empty(Tree = #dmerkle{file=File,block=Block}, Leaf = #leaf{values=Values}) ->
  +  if 
  +    length(Values) == 0 -> io:format("leaf was empty: ~p", [Leaf]);
  +    true -> noop
  +  end;
  +  
  +scan_for_empty(_, undefined) ->
  +  io:format("got an undefined!").
   
   key_diff(_LeafA = #leaf{values=ValuesA}, _LeafB = #leaf{values=ValuesB}, 
       #dmerkle{file=FileA}, #dmerkle{file=FileB}, Keys) ->
  
positive.code: 
  update(KeyHash, Key, Value, Node = #node{children=Children,keys=Keys}, Tree = #dmerkle{d=D,file=File,block=BlockSize}) ->
    {FoundKey, {ChildHash,ChildPointer}} = find_child(KeyHash, Keys, Children),
    Child = read(File,ChildPointer,BlockSize),
    case m(Child) of
      M when M >= D -> update(KeyHash, Key, Value, split_child(Node, FoundKey, Child, Tree), Tree);
  
negative.code: 
  
  %% API
  -export([open/1, open/2, equals/2, update/3, delete/2, leaf_size/1, key_diff/2, close/1, scan_for_empty/1]).
  
  -ifdef(TEST).
  -include("etest/dmerkle_test.erl").
  