anchor.diff:  			maps:put(data, NewData, Node);
   		error -> Node
   	end,
  -	case maps:find(children, Node) of
  -		{ok, Children} -> transform(Operator, fastConcat(Rest, Children));
  -		error -> transform(Operator, Rest)
  -	end.
  +	transform(Operator, fastConcat(Rest, maps:get(children, Node, [])));
   
   rewrite(Operator, NodeKey) when is_function(Operator), is_tuple(NodeKey) ->
   	{ok, Node} = plywood_db:fetch(primary_tree, NodeKey),
  
positive.code: 		{ok, Data} -> lists:foldl(fun(Datum, AccIn) -> Operator(Datum, AccIn, Id, Name) end, Acc, Data);
  		error -> Acc
  	end,
  	case maps:find(children, Node) of
  		{ok, Children} -> accumulate(Operator, NodeAcc, fastConcat(Rest, Children));
  		error -> accumulate(Operator, NodeAcc, Rest)
  	end.
  
  filter(Operator, NodeKey) when is_function(Operator), is_tuple(NodeKey) ->
  	{ok, #{ id := Id, name := Name } = Node} = plywood_db:fetch(primary_tree, NodeKey),
  
negative.code: 		{ok, Data} -> [ Operator(Datum, Id, Name) || Datum <- Data];
  		error -> ok
  	end,
  	traverse(Operator, fastConcat(Rest, maps:get(children, Node, [])));
  
  accumulate(_Operator, Acc, []) -> Acc;
  accumulate(Operator, Acc, [NodeKey |Rest]) when is_function(Operator), is_tuple(NodeKey) ->
  