Iterator<Map.Entry<? extends K, ? extends V>> entries = new HashIterator<Map.Entry<? extends K, ? extends V>>(ENTRIES);
Iterator<Map.Entry<K, V>> entries = new EntryIterator();
  public synchronized String toString()  {    // Since we are already synchronized, and entrySet().iterator()    // would repeatedly re-lock/release the monitor, we directly use the    // unsynchronized HashIterator instead.    Iterator<Map.Entry<? extends K, ? extends V>> entries      = new HashIterator<Map.Entry<? extends K, ? extends V>>(ENTRIES);    StringBuffer r = new StringBuffer("{");    for (int pos = size; pos > 0; pos--)      {        r.append(entries.next());        if (pos > 1)          r.append(", ");      }    r.append("}");    return r.toString();  }