anchor.diff:  
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
  --spec search(key(), key_values(), pos_integer(), pos_integer()) -> {'none', pos_integer()} | {value(), pos_integer()}.
  -
  -search(Key, KeyValues, Upper, Limit) when Upper =< Limit ->
  +-spec search(key(), key_values(), pos_integer()) -> {'none', pos_integer()} | {value(), pos_integer()}.
  +
  +search(Key, KeyValues, Upper) when Upper =< ?BINARY_SEARCH_FROM_LENGTH ->
       sequential_search(Key, KeyValues, 0);
  -search(Key, KeyValues, Upper, _Limit) ->
  +search(Key, KeyValues, Upper) ->
       binary_search(Key, KeyValues, 1, Upper).
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
positive.code:                                                                                                        end
                                                                                                 end,
                                                                                    {KeyValuesSplit, TreesSplit} = split_tree_non_root(TreeUpper, KeyNoSplit, KeyValues, Trees, TreeUpperPos),
                                                                                    {none, TreeUpperPosSplit} = search(Key, KeyValuesSplit, length(KeyValuesSplit), ?BINARY_SEARCH_FROM_LENGTH),
                                                                                    {lists:nth(TreeUpperPosSplit, TreesSplit), KeyValuesSplit, TreesSplit, TreeUpperPosSplit};
                                                                                _ ->
                                                                                    {TreeUpper, KeyValues, Trees, TreeUpperPos}
  
negative.code: -spec update_1(key_value(), tree()) -> {tree(), boolean()}.
  
  update_1({Key, _} = KeyValue, {KeyNo, IsLeaf, KeyValues, Trees}) ->
      {ValueFound, KeyPos} = search(Key, KeyValues, KeyNo),
      case ValueFound of
          none ->
              case IsLeaf of
  