public final Object[] toArray() {
          long sz = map.mappingCount();
          if (sz > MAX_ARRAY_SIZE)
              throw new OutOfMemoryError(OOME_MSG);
          int n = (int)sz;
          Object[] r = new Object[n];
          int i = 0;
          for (E e : this) {
              if (i == n) {
                  if (n >= MAX_ARRAY_SIZE)
                      throw new OutOfMemoryError(OOME_MSG);
                  if (n >= MAX_ARRAY_SIZE - (MAX_ARRAY_SIZE >>> 1) - 1)
                      n = MAX_ARRAY_SIZE;
                  else
                      n += (n >>> 1) + 1;
                  r = Arrays.copyOf(r, n);
              }
              r[i++] = e;
          }
          return (i == n) ? r : Arrays.copyOf(r, i);
      }
public final Object[] toArray()