code: @Override
      public final Iterator<T> iterator()
      {
          return new Iterator<T>()
          {
              private Iterator<BinaryValue> i = values.iterator();
  
              @Override
              public boolean hasNext()
              {
                  return i.hasNext();
              }
  
              @Override
              public T next()
              {
                  return convert(i.next());
              }
  
              @Override
              public void remove()
              {
                  i.remove();
              }
          };
      }
docs: Returns an iterator over the asSet of values in this index.
  This iterator is a "weakly consistent" iterator that will never throw
  {@link ConcurrentModificationException}, and guarantees to traverse elements
  as they existed upon construction of the iterator, and may (but is not guaranteed to)
  reflect any modifications subsequent to construction.
  @return an Iterator.