anchor.diff:      % skip
       dby_read(dby_db(example2())),
       ?assertEqual([<<"A">>,<<"B">>,<<"C">>,<<"E">>],
  -            lists:sort(dby:search(search_fn_skip_on(<<"B">>), <<"A">>, [],
  +            lists:sort(dby:search(search_fn_skip_on(<<"B">>), [], <<"A">>,
                                                       [depth, {max_depth, 2}]))).
   
   search6() ->
  
positive.code: search9() ->
      % stop
      dby_read(dby_db(example1())),
      Order = dby:search(search_fn_stop_on(<<"C">>), <<"A">>, [],
                                                      [breadth, {max_depth, 2}]),
      % C is last identifier
      ?assertEqual(<<"C">>, lists:last(Order)).
  
negative.code:     % continue
      dby_read(dby_db([IdentifierR1])),
      ?assertEqual([{Identifier1, Metadata1, undefined}],
                  dby:search(search_fn(continue), [], Identifier1, [depth])),
  
      % skip
      dby_read(dby_db([IdentifierR1])),
      ?assertEqual([{Identifier1, Metadata1, undefined}],
                  dby:search(search_fn(skip), [], Identifier1, [depth])),
  
      % stop
      dby_read(dby_db([IdentifierR1])),
      ?assertEqual([{Identifier1, Metadata1, undefined}],
                  dby:search(search_fn(stop), [], Identifier1, [depth])).
  
  search2() ->
      dby_read(dby_db(example1())),
      ?assertEqual([{<<"A">>, id_metadata1(<<"A">>), undefined}],
                          dby:search(search_fn(continue), [], <<"A">>, [depth])),
      ?assertEqual([{<<"A">>, id_metadata1(<<"A">>), undefined}],
          dby:search(search_fn(continue), [], <<"A">>, [depth, {max_depth, 0}])),
      ?assertEqual([<<"A">>,<<"B">>,<<"C">>,<<"E">>],
          lists:sort(dby:search(search_fn2(continue), [], <<"A">>,
                                                      [depth, {max_depth, 1}]))),
      ?assertEqual([<<"A">>,<<"B">>,<<"C">>,<<"D">>,<<"E">>,<<"F">>,<<"G">>],
          lists:sort(dby:search(search_fn2(continue), [], <<"A">>,
                                                      [depth, {max_depth, 2}]))),
      ?assertEqual([<<"A">>,<<"B">>,<<"C">>,<<"D">>,<<"E">>,<<"F">>,<<"G">>],
          lists:sort(dby:search(search_fn2(continue), [], <<"A">>,
                                                      [depth, {max_depth, 3}]))),
      % start at differnt point
      ?assertEqual([{<<"B">>, id_metadata1(<<"B">>), undefined}],
                          dby:search(search_fn(continue), [], <<"B">>, [depth])),
      ?assertEqual([<<"A">>,<<"B">>,<<"C">>,<<"D">>,<<"E">>,<<"F">>],
          lists:sort(dby:search(search_fn2(continue), [], <<"B">>,
                                                      [depth, {max_depth, 2}]))),
      ?assertEqual([<<"A">>,<<"B">>,<<"C">>,<<"D">>,<<"E">>,<<"F">>,<<"G">>],
          lists:sort(dby:search(search_fn2(continue), [], <<"B">>,
                                                      [depth, {max_depth, 3}]))).
  
  search3() ->
      % depth order search
      dby_read(dby_db(example2())),
      Order = dby:search(search_fn2(continue), [], <<"A">>,
                                                      [depth, {max_depth, 2}]),
      % A is first, D is before C or E is before B.
      [First | _] = Order,
  