return new HashIterator<Map.Entry<K, V>>(ENTRIES);
return new EntryIterator();
  public Set<Map.Entry<K, V>> entrySet()  {    if (entries == null)      {        // Create an AbstractSet with custom implementations of those methods        // that can be overridden easily and efficiently.        Set<Map.Entry<K, V>> r = new AbstractSet<Map.Entry<K, V>>()        {          public int size()          {            return size;          }          public Iterator<Map.Entry<K, V>> iterator()          {            return new HashIterator<Map.Entry<K, V>>(ENTRIES);          }          public void clear()          {            Hashtable.this.clear();          }          public boolean contains(Object o)          {            return getEntry(o) != null;          }          public boolean remove(Object o)          {            HashEntry<K, V> e = getEntry(o);            if (e != null)              {                Hashtable.this.remove(e.key);                return true;              }            return false;          }        };        // We must specify the correct object to synchronize upon, hence the        // use of a non-public API        entries = new Collections.SynchronizedSet<Map.Entry<K, V>>(this, r);      }    return entries;  }