anchor.diff:  %%% If not found, return {false, Path}.
   
   search(IO, X, A) ->
  -  search(IO, X, A, []).
  -
  -search(_IO, _X, ?NOPAGEID, Path) ->
  +  search_pageid(IO, X, A, []).
  +
  +search_pageid(_IO, _X, ?NOPAGEID, Path) ->
     {false, Path};
  -search(IO, X, A, Path) ->
  -  #page{p0 = P0, e = E} = P = page_read(IO, A),
  +search_pageid(IO, X, A, Path) ->
  +  search_page(IO, X, page_read(IO, A), Path).
  +
  +search_page(IO, X, P = #page{p0 = P0, e = E}, Path) ->
     case binsearch(E, X) of
       {found, K} ->
         {true, P, K, Path};
  
positive.code: %%%_* Printing a B-tree (for debugging) ========================================
  
  print(IO, #btree{root = A}) ->
    print(IO, A, 1).
  
  print(_IO, ?NOPAGEID, _L) ->
    ok;
  print(IO, PageId, L) ->
    #page{p0 = P0, e = E} = page_read(IO, PageId),
    [io:format("     ") || _I <- lists:seq(1, L)],
    [io:format(" ~4w", [(element(I, E))#item.k]) || I <- lists:seq(1, size(E))],
    io:format("~n"),
    print(IO, P0, L + 1),
    [print(IO, (element(I, E))#item.p, L + 1) || I <- lists:seq(1, size(E))],
    ok.
  
  %%%_* Emacs ====================================================================
  
negative.code:         if R =:= 0 -> P0;
             true -> (element(R, E))#item.p
          end,
        search_pageid(IO, X, Q, [{P, R} | Path])
    end.
  
  %%%_* Binary search within a page ==============================================
  