@Override public Object clone(){
  try {
    IdentityHashMap<K,V> cloneHashMap=(IdentityHashMap<K,V>)super.clone();
    cloneHashMap.elementData=newElementArray(elementData.length);
    System.arraycopy(elementData,0,cloneHashMap.elementData,0,elementData.length);
    return cloneHashMap;
  }
 catch (  CloneNotSupportedException e) {
    throw new AssertionError(e);
  }
}

@ Override public Object clone ( ) { try { IdentityHashMap < K , V > cloneHashMap = ( IdentityHashMap < K , V > ) super . clone ( ) ; cloneHashMap . elementData = newElementArray ( elementData . length ) ; System . arraycopy ( elementData , 0 , cloneHashMap . elementData , 0 , elementData . length ) ; return cloneHashMap ; } catch ( CloneNotSupportedException e ) { throw new AssertionError ( e ) ; } }
returns a new identityhashmap with the same mappings and size as this one .
