anchor.diff:      hash_and_store(Tree, StoreFunc).
   
   put_path([P], BS, Tree, StoreFunc, _FindFunc) when is_binary(BS) ->
  -    NewTree = put(P, BS, Tree),
  +    NewTree = store(P, BS, Tree),
       hash_and_store(NewTree, StoreFunc);	    
   put_path([P], Object, Tree, StoreFunc, _FindFunc) ->
       {ObjectHash, Object} = hash_and_store(Object, StoreFunc),
       put_path([P], ObjectHash, Tree, StoreFunc, _FindFunc);
   put_path([P|Rest], Object, Tree, StoreFunc, FindFunc) ->
  -    case get(P, Tree) of
  +    case find(P, Tree) of
   	none ->
   	    [Last|Tser] = lists:reverse(Rest),
   	    {LeafHash, _Leaf} = put_path([Last], Object, gb_trees:empty(), StoreFunc, FindFunc),
  
positive.code: empty() ->
      gb_trees:empty().
  
  put(Key, Val, Tree) ->
      case gb_trees:lookup(Key, Tree) of
  	none ->
  	    gb_trees:insert(Key, Val, Tree);
  
negative.code: 	{value, ElementHash} ->
  	    Subtree = FindFunc(ElementHash),
  	    {SubtreeHash, _NewSubtree} = put_path(Rest, Object, Subtree, StoreFunc, FindFunc),
  	    NewTree = store(P, SubtreeHash, Tree),
  	    hash_and_store(NewTree, StoreFunc)
      end.
  
  