anchor.diff:  
             %% an ets table holding references to per
             %% full-prefix ets tables
  -          ets_tabs   :: ets:tab()
  +          ets_tabs   :: ets:tab(),
  +
  +          %% an ets table to hold iterators opened
  +          %% by other nodes
  +          iterators  :: ets:tab()
            }).
   
   -record(metadata_iterator, {
             prefix :: metadata_prefix(),
             match  :: term(),
             pos    :: term(),
  -          obj    :: {metadata_key(), metadata_object()},
  +          obj    :: {metadata_key(), metadata_object()} | undefined,
             done   :: boolean(),
             tab    :: ets:tab()
            }).
   
  +-record(remote_iterator, {
  +          node   :: node(),
  +          ref    :: reference(),
  +          prefix :: atom() | binary()
  +         }).
  +
   -opaque metadata_iterator() :: #metadata_iterator{}.
  +-type remote_iterator()     :: #remote_iterator{}. 
   
   -type mm_path_opt()     :: {data_dir, file:name_all()}.
   -type mm_nodename_opt() :: {nodename, term()}.
  
positive.code:          iterator/0,
           iterator/1,
           iterator/2,
           iterate/1,
           iterator_prefix/1,
           iterator_value/1,
           iterator_done/1,
           put/3]).
  
  %% riak_core_broadcast_handler callbacks
  
negative.code:     close_manifest(),
      ok.
  
  %% @private
  -spec code_change(term() | {down, term()}, #state{}, term()) -> {ok, #state{}}.
  code_change(_OldVsn, State, _Extra) ->
  