anchor.diff:  
   %% @doc Checks whether an interval is present in the merkle tree and returns
   %%      the node responsible for it (exact match!).
  --spec lookup(mt_interval(), merkle_tree()) -> mt_node() | not_found.
  +-spec lookup(intervals:interval(), merkle_tree()) -> mt_node() | not_found.
   lookup(I, {merkle_tree, _, Root}) ->
       case intervals:is_subset(I, get_interval(Root)) of
           true  -> lookup_(I, Root);
  
positive.code: %%      inserts entries from EntryList.
  %%      ConfParams = list of tuples defined by {config field name, value}
  %%      e.g. [{branch_factor, 32}, {bucket_size, 16}]
  -spec new(mt_interval(), EntryList::mt_bucket(), mt_config_params())
          -> merkle_tree().
  new(I, EntryList, ConfParams) ->
      gen_hash(bulk_build(I, EntryList, ConfParams)).
  
negative.code: 
  %% @doc Helper for lookup/2. In contrast to lookup/2, assumes that I is a
  %%      subset of the current node's interval.
  -spec lookup_(intervals:interval(), mt_node()) -> mt_node() | not_found.
  lookup_(I, {_H, _ICnt, _Bkt, I} = Node) ->
      Node;
  lookup_(_I, {_H, _ICnt, _Bkt, _NodeI}) ->
  