anchor.diff:  
   -ifdef(TEST).
   %% export the private functions for testing only.
  --export([normalize/2, to_node_id/2, to_node_id/3, to_node_list/1,
  -         box_to_volume/2, filter_full_area/1,common_prefix/2,
  +-export([normalize/2, to_node_id/1, to_node_id/2, to_node_id/3,
  +         to_node_list/1, box_to_volume/2, filter_full_area/1,common_prefix/2,
            is_equal/2, first_node/1, rest_nodes/1, append_node/2,
            xval/1, yval/1, zval/1, is_all_ones/1, is_all_zeroes/1,
            bit_count/1, default_max_depth/0]).
  
positive.code: %%
  %% @end
  -spec split(TreePrefix :: [ot_child_code()], RestDepth :: non_neg_integer(),
              P1 :: #ot_node_id{}, P2 :: #ot_node_id{}) -> 
            [ {#ot_node_id{}, #ot_node_id{}} ].
  %% --------------------------------------------------------------------
  split(TreePrefix, RestDepth, P1, P2) -> 
      
      F1 = first_node(P1), F2 = first_node(P2),
  
  %%     ?debugFmt("TreePrefix: ~p, RestDepth: ~p, F1: ~p, F2: ~p, P1: ~p, P2: ~p",[TreePrefix, RestDepth, F1, F2, P1, P2]),
  
      case F1 == F2 of
          true -> 
              R1 = rest_nodes(P1), R2 = rest_nodes(P2),
              split(TreePrefix ++ [F1], RestDepth-1, R1, R2);
          false ->            
              case (F1 == 0) and (F2 == 7) of
                  % in case the covers the whole tree, sweep up and only return the prefix
                  % twice, as it will be collected by filter_full_area
                  true -> 
                      [ {to_node_id(TreePrefix, ?DEFAULT_MAX_DEPTH), 
                         to_node_id(TreePrefix, ?DEFAULT_MAX_DEPTH)} ];
                  
                  false ->  
                      List1 = split_borders([{P1,P2}],x),
                      List2 = split_borders(List1,y),
                      List3 = split_borders(List2,z),
                      
                      lists:map(fun({Node1, Node2}) -> 
                                        {prepend_path(Node1, TreePrefix),
                                         prepend_path(Node2, TreePrefix)} 
                                end, List3)
              end
      end.
  
negative.code: -spec rest_nodes(Position :: #ot_node_id{} ) -> #ot_node_id{} | no_return().
  %% --------------------------------------------------------------------
  
  rest_nodes(#ot_node_id{depth=0}) -> throw(zero_depth);
  
  rest_nodes(#ot_node_id{depth=Depth, x=X, y=Y, z=Z}) ->
      NewX = ((X band ?QUPOT_REST_MASK) bsl 1),
  