if (h > table.length)
if (h >= table.length)
  public Object put (Object key, Object value)  {    // Rehash is the load factor is too high.    if (size * 3 / 2 > table.length)      {	Object[] old = table;	table = new Object[old.length * 2];	Arrays.fill (table, emptyslot);	size = 0;	for (int i = 0; i < old.length; ++i)	  {	    if (old[i] != tombstone && old[i] != emptyslot)	      {		// Just use put.  This isn't very efficient, but it is		// ok.		put (old[i], old[i + 1]);	      }	  }      }    int h = Math.abs (2 * System.identityHashCode (key) % table.length);    int save = h;    int del = -1;    while (true)      {	if (table[h] == key)	  {	    Object r = table[h + 1];	    table[h + 1] = value;	    return r;	  }	else if (table[h] == tombstone && del == -1)	  del = h;	else if (table[h] == emptyslot)	  {	    if (del == -1)	      del = h;	    break;	  }	h += 2;	if (h > table.length)	  h = 0;	if (h == save)	  break;      }    if (del != -1)      {	table[del] = key;	table[del + 1] = value;	++size;	return null;      }    // This is an error.    return null;  }