anchor.diff:          makeTree(Index, Rev, fun mergeStore/2).
   
   delete(Index, Rev) when is_map(Rev) ->
  -        RevTree = makeTree(Index, Rev, fun demergeTrees/2),
  -        {ok, FullTree} = plywood_db:fetch(primary_tree, Index),
  -        plywood_db:store(primary_tree, Index, demergeTrees(FullTree, RevTree)).
  +        makeTree(Index, Rev, fun deMergeStore/2).
   
   deleteByValue(_Index, _Value) -> ok.
   
  -processOps() -> [aggregate, filter, truncate].
  +processOps() -> [aggregate, filter].
   
   processTree(Tree, Opts) when is_map(Opts) ->
           OpList = buildOpList(undefined, [], Opts, processOps(), []),
  
positive.code: getOperator(filter, {Field, 'unilike', Value}) ->
          Regexp = buildRegexFun(Value, true, [caseless]),
          buildFilterFun(Regexp, Field);
  getOperator(truncate, Depth) when is_integer(Depth) ->
          fun(Tree) -> truncate(Tree, Depth) end;
  getOperator(_, _) -> fun(Tree) -> Tree end.
  
  buildOpList(Token, [Op | Rest], OpsMap, Seq, List) ->
  
negative.code: compactNode(Node) when is_map(Node) ->
          maps:from_list([ {K, V} || {K, V} <- maps:to_list(Node), V =/= {#{}, []}]).
  
  deMergeNodes(#{ data := OldData } = Old, #{ data := PurgeData }) ->
  	case remove(OldData, PurgeData) of
  		OldData -> noop;
  		NewData -> maps:put(data, NewData, Old)
  	end;
  deMergeNodes(_, _) -> noop.
  
  remove(From, Items) when is_list(From), is_list(Items) ->
          ordsets:to_list(ordsets:subtract(ordsets:from_list(From), ordsets:from_list(Items))).
  