anchor.diff:           interval = intervals:empty()                       :: intervals:interval(),
            bloom    = ?required(bloom_recon_struct, bloom)    :: ?REP_BLOOM:bloom_filter()         
           }).
  --type bloom_recon_struct() :: #bloom_recon_struct{}.
   
   -type internal_params() :: {reconPid, comm:mypid()} |
                              {art, art:art()}.
   
  --type struct() :: bloom_recon_struct() |
  -                  merkle_tree:merkle_tree() |
  -                  art:art() |                        
  -                  [internal_params()] |
  -                  [merkle_tree:mt_node()].
  +-type sync_struct() :: #bloom_recon_struct{} |
  +                       merkle_tree:merkle_tree() |
  +                       art:art().
  +-type parameters() :: sync_struct() |
  +                      [internal_params()] |
  +                      [merkle_tree:mt_node()].
   -type recon_dest() :: ?RT:key() | random.
   
   -record(rr_recon_state,
  
positive.code:     case intervals:is_empty(SyncI) of
          false ->
              RMethod =:= merkle_tree andalso fd:subscribe(DestRRPid),
              send_chunk_req(DhtPid, self(), SyncI, SenderI, get_max_items(RMethod)),
              NewState;
          true when DestReconPid =/= undefined ->
              send(DestReconPid, {shutdown, empty_interval}),
  
negative.code:          dest_recon_pid     = undefined                                 :: comm:mypid() | undefined, %dest recon process pid
           method             = undefined                                 :: method(),
           dest_interval      = intervals:empty()                         :: intervals:interval(),
           struct             = {}                                        :: parameters() | {},
           stage              = req_shared_interval                       :: stage(),
           initiator          = false                                     :: boolean(),
           stats              = rr_recon_stats:new()                      :: rr_recon_stats:stats()
  