anchor.diff:                  tab=Tab
                  }.
   
  +new_iterator(undefined, undefined, Tab) ->
  +    new_iterator(undefined, undefined, Tab, ets:first(Tab));
  +new_iterator(undefined, Prefix, Tab) ->
  +    new_iterator(undefined, Prefix, Tab,
  +                 ets:select(Tab, [{{{Prefix,'$1'},'_'},[],['$1']}], 1));
   new_iterator(FullPrefix, KeyMatch, Tab) ->
       ObjectMatch = iterator_match(KeyMatch),
       new_iterator(FullPrefix, KeyMatch, Tab, ets:match_object(Tab, ObjectMatch, 1)).
   
   new_iterator(FullPrefix, KeyMatch, Tab, '$end_of_table') ->
       empty_iterator(FullPrefix, KeyMatch, Tab);
  +new_iterator(undefined, undefined, Tab, First) ->
  +    #metadata_iterator{
  +       prefix=undefined,
  +       match=undefined,
  +       pos=First,
  +       obj=undefined,
  +       done=false,
  +       tab=Tab
  +      };
  +new_iterator(undefined, Prefix, Tab, {[First], Cont}) ->
  +    #metadata_iterator{
  +       prefix=undefined,
  +       match=Prefix,
  +       pos=Cont,
  +       obj=First,
  +       done=false,
  +       tab=Tab
  +      };
   new_iterator(FullPrefix, KeyMatch, Tab, {[First], Cont}) ->
       #metadata_iterator{
  -              prefix=FullPrefix,
  -              match=KeyMatch,
  -              pos=Cont,
  -              obj=First,
  -              done=false,
  -              tab=Tab
  -             }.
  +       prefix=FullPrefix,
  +       match=KeyMatch,
  +       pos=Cont,
  +       obj=First,
  +       done=false,
  +       tab=Tab
  +      }.
   
   iterator_match(undefined) ->
       '_';
  
positive.code:     It#metadata_iterator{done=true,
                           pos=undefined,
                           obj=undefined};
  next_iterator(It, {[Next], Cont}) ->
      It#metadata_iterator{pos=Cont,
                           obj=Next}.
  
negative.code: get({{Prefix, SubPrefix}, _Key}=PKey) when (is_binary(Prefix) orelse is_atom(Prefix)) andalso
                                             (is_binary(SubPrefix) orelse is_atom(SubPrefix)) ->
      gen_server:call(?SERVER, {get, PKey}, infinity).
  
  %% @doc Returns a full-prefix iterator: an iterator for all full-prefixes that have keys stored under them
  -spec iterator() -> metadata_iterator().
  iterator() ->
      gen_server:call(?SERVER, {iterator, undefined, undefined}).
  
  %% @doc Returns a sub-prefix iterator for a given prefix.
  -spec iterator(binary() | atom()) -> metadata_iterator().
  iterator(Prefix) when is_binary(Prefix) or is_atom(Prefix) ->
      gen_server:call(?SERVER, {iterator, undefined, Prefix}).
  
  %% @doc Return an iterator for keys stored under a prefix. If KeyMatch is undefined then
  %% all keys will may be visted by the iterator. Otherwise only keys matching KeyMatch will be
  