anchor.diff:           }).
   -type state() :: #rr_recon_state{}.
   
  --type merkle_cmp_request() :: {intervals:interval(), merkle_tree:mt_node_key()}.
  --type merkle_cmp_result()  ::
  -          {intervals:interval(), ok_inner | ok_leaf | not_found | fail_leaf} |
  -          {intervals:interval(), fail_inner, [merkle_tree:mt_node_key()]}.
  +-define(ok_inner,    1).
  +-define(ok_leaf,     2).
  +-define(fail_leaf,   3).
  +-define(fail_inner,  4).
  +-define(omit,        9).
  +
  +-type merkle_cmp_result() :: ?ok_inner | ?ok_leaf | ?fail_leaf | ?fail_inner.
  +-type merkle_cmp_requst() :: merkle_tree:mt_node_key() | ?omit.
   
   -type request() :: 
       {start, method(), DestKey::recon_dest()} |
  
positive.code: -type struct() :: bloom_recon_struct() |
                    merkle_tree:merkle_tree() |
                    art:art() |                        
                    [internal_params()].
  -type recon_dest() :: ?RT:key() | random.
  
  -record(rr_recon_state,
  
negative.code: %% merkle tree sync messages
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  on({check_nodes, SenderPid, ToCheck}, State = #rr_recon_state{ struct = Tree }) ->
      %not merkle_tree:is_merkle_tree(Tree) andalso
      %    ct:pal("Parter: ~p", [[{merkle_tree:get_hash(X), merkle_tree:get_interval(X)} || X <- Tree]]),
      {Result, RestTree} = check_node(ToCheck, Tree),
      comm:send(SenderPid, {check_nodes_response, Result}),
      State#rr_recon_state{ dest_recon_pid = SenderPid, struct = RestTree };
  
  on({check_nodes_response, CmpResults}, State =
         #rr_recon_state{ dest_recon_pid = DestReconPid,
  