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: check(IO, #btree{order = N, root = A}) ->
    LowerBound = false,
    IsRoot = true,
    _LowerBound2 = check_page(IO, N, A, LowerBound, IsRoot),
    ok.
  
  check_page(_IO, _N, ?NOPAGEID, LowerBound, _IsRoot) -> LowerBound;
  check_page(IO, N, PageId, LowerBound, IsRoot) ->
    #page{p0 = P0, e = E} = page_read(IO, PageId),
    %% check page size
    true = size(E) =< 2 * N,
    true = IsRoot orelse size(E) >= N,
    %% check key order and subtrees
    LowerBound2 = check_page(IO, N, P0, LowerBound, false),
    check_elements(IO, N, E, 1, LowerBound2).
  
  check_elements(_IO, _N, E, I, LowerBound) when I > size(E) -> LowerBound;
  
negative.code: 
  -record(page, % m == size(e)
          { pageid :: pageid()
          , p0 :: pageid() % subtree with keys k' < (element(1, e))#item.k
          , e :: {#item{}}
          }).
  
  -record(btree,
          { order :: pos_integer() % aka N
          , root :: pageid()
          }).
  
  %%%_* Creating an empty B-tree =================================================
  