anchor.diff:  
   next_iterator(It=#metadata_iterator{done=true}) ->
       It;
  +next_iterator(It=#metadata_iterator{prefix=undefined,match=undefined,tab=Tab,pos=Pos}) ->
  +    next_iterator(It, ets:next(Tab, Pos));
  +next_iterator(It=#metadata_iterator{prefix=undefined,pos=Pos}) ->
  +    next_iterator(It, ets:select(Pos));
   next_iterator(It=#metadata_iterator{pos=Pos}) ->
       next_iterator(It, ets:match_object(Pos)).
   
  
positive.code:                 tab=Tab
                 }.
  
  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(FullPrefix, KeyMatch, Tab, {[First], Cont}) ->
      #metadata_iterator{
                prefix=FullPrefix,
                match=KeyMatch,
                pos=Cont,
                obj=First,
                done=false,
                tab=Tab
               }.
  
  iterator_match(undefined) ->
      '_';
  
negative.code:     It#metadata_iterator{done=true,
                           pos=undefined,
                           obj=undefined};
  next_iterator(It=#metadata_iterator{prefix=undefined,match=undefined},Next) ->
      It#metadata_iterator{pos=Next};
  next_iterator(It, {[Next], Cont}) ->
      It#metadata_iterator{pos=Cont,
                           obj=Next}.
  