anchor.diff:  -module(windex).
   
  --export([lookup/2, add/2, delete/2, export/1]).
  +-export([lookup/2, add/2, delete/2, deleteByValue/2, export/1]).
   -compile(export_all).
   %% ------------------------------------------------------------------
   %% API Function Definitions
  
positive.code: 
  makeTree(Revision) when is_map(Revision) -> {doMakeTree(Revision), []}.
  doMakeTree(Revision) when is_map(Revision) ->
          maps:map(fun(_Key, Value) -> convertNode(Value) end, Revision).
  
  mergeTrees({LsubTree, Ldata}, {RsubTree, Rdata}) ->
          NewData = lists:umerge(Ldata, Rdata),
  
negative.code:                 {ok, LeftValue} -> mergeTrees(LeftValue, Value)
          end,
          hashMerge(maps:put(Key, NewValue, Left), Rest).
  
  compactNode(Node) when is_map(Node) ->
          maps:from_list([ {K, V} || {K, V} <- maps:to_list(Node), V =/= {#{}, []}]).
  