anchor.diff:      {create_struct, method(), SenderI::intervals:interval()} | % from initiator
       {start_recon, bloom, #bloom_recon_struct{}} | % to initiator
       {start_recon, merkle_tree, #merkle_params{}} | % to initiator
  -    {start_recon, art, art:art()}. % to initiator
  +    {start_recon, art, #art_recon_struct{}}. % to initiator
   
   -type message() ::
       % API
  
positive.code: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  -spec build_recon_struct(method(), OldSyncStruct::sync_struct() | {},
                           intervals:non_empty_interval(), db_chunk_enc())
          -> sync_struct().
  build_recon_struct(bloom, _OldSyncStruct = {}, I, DBItems) ->
      ?ASSERT(not intervals:is_empty(I)),
      Fpr = get_bloom_fpr(),
      ElementNum = length(DBItems),
      HFCount = bloom:calc_HF_numEx(ElementNum, Fpr),
      BF = ?REP_BLOOM:new(ElementNum, Fpr, ?REP_HFS:new(HFCount), DBItems),
      #bloom_recon_struct{ interval = I, bloom = BF };
  build_recon_struct(merkle_tree, _OldSyncStruct = {}, I, DBItems) ->
      ?ASSERT(not intervals:is_empty(I)),
      merkle_tree:new(I, DBItems, [{branch_factor, get_merkle_branch_factor()},
                                   {bucket_size, get_merkle_bucket_size()}]);
  build_recon_struct(merkle_tree, OldSyncStruct, _I, DBItems) ->
      ?ASSERT(not intervals:is_empty(_I)),
      ?ASSERT(merkle_tree:is_merkle_tree(OldSyncStruct)),
      NTree = merkle_tree:insert_list(DBItems, OldSyncStruct),
      merkle_tree:gen_hash(NTree);
  build_recon_struct(art, _OldSyncStruct = {}, I, DBItems) ->
      ?ASSERT(not intervals:is_empty(I)),
      Branch = get_merkle_branch_factor(),
      BucketSize = merkle_tree:get_opt_bucket_size(length(DBItems), Branch, 1),
      Tree = merkle_tree:new(I, DBItems, [{branch_factor, Branch},
                                          {bucket_size, BucketSize}]),
      art:new(Tree, get_art_config()).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % HELPER
  
negative.code:     ?TRACE("BEGIN SYNC", []),
      case Initiator of
          true ->
              Stats1 = art_recon(MySyncStruct, OtherSyncStruct#art_recon_struct.art, State),
              shutdown(sync_finished, State#rr_recon_state{stats = Stats1});
          false ->
              SID = rr_recon_stats:get(session_id, Stats), 
  