anchor.diff:  
   foldwide(Fun, Acc, {?MODULE, _, Root}) ->
       fold_wide(Fun, Acc, 1, Root).
  +
  +%%
  +
  +-spec walk(WalkFun, tree()) -> [treeleaf()] when
  +    WalkFun :: fun((node | leaf, erstar_bound:bound()) -> boolean()).
  +
  +walk(WalkFun, {?MODULE, _, Root}) ->
  +    walk_node(WalkFun, [], Root).
  +
  +%%
  +
  +-spec at(number(), number(), tree()) -> [treeleaf()].
  +
  +at(X, Y, RStar) ->
  +    locate(erstar_bound:new(X, Y), RStar).
  +
  +-spec locate(erstar_bound:bound(), tree()) -> [treeleaf()].
  +
  +locate(Where, RStar) ->
  +    locate(enclose, Where, RStar).
  +
  +-spec locate(enclose | overlap, erstar_bound:bound(), tree()) -> [treeleaf()].
  +
  +locate(enclose, Where, RStar) ->
  +    walk(fun (Type, Bound) -> does_enclose(Type, Bound, Where) end, RStar);
  +
  +locate(intersect, Where, RStar) ->
  +    walk(fun (Type, Bound) -> does_intersect(Type, Bound, Where) end, RStar).
  +
  +%%
  +
  +does_enclose(node, Bound, Location) ->
  +    erstar_bound:intersect(Location, Bound) =/= empty;
  +
  +does_enclose(leaf, Bound, Location) ->
  +    erstar_bound:unify(Location, Bound) =:= Location.
  +
  +does_intersect(_Any, Bound, Location) ->
  +    erstar_bound:intersect(Location, Bound) =/= empty.
   
   %%
   
  
positive.code: newleaf(Bound, Data) ->
      {Bound, Data}.
  
  bound({Bound, _}) ->
      Bound;
  
  
negative.code:     instance/1,
      insert/3,
      fold/3,
      foldwide/3,
      walk/2,
      at/3,
      locate/2,
      locate/3
  ]).
  
  %%
  