private final void copy_check_and_promote( NonBlockingIdentityHashMap topmap, Object[] oldkvs, int workdone ) {
      assert chm(oldkvs) == this;
      int oldlen = len(oldkvs);
      // We made a slot unusable and so did some of the needed copy work
      long copyDone = _copyDone;
      assert (copyDone+workdone) <= oldlen;
      if( workdone > 0 ) {
        while( !_copyDoneUpdater.compareAndSet(this,copyDone,copyDone+workdone) ) {
          copyDone = _copyDone; // Reload, retry
          assert (copyDone+workdone) <= oldlen;
        }
      }

      // Check for copy being ALL done, and promote.  Note that we might have
      // nested in-progress copies and manage to finish a nested copy before
      // finishing the top-level copy.  We only promote top-level copies.
      if( copyDone+workdone == oldlen && // Ready to promote this table?
          topmap._kvs == oldkvs &&       // Looking at the top-level table?
          // Attempt to promote
          topmap.CAS_kvs(oldkvs,_newkvs) ) {
        topmap._last_resize_milli = System.currentTimeMillis(); // Record resize time for next check
      }
    }
Returns the value to which the specified key is mapped, or {@code null}
 if this map contains no mapping for the key.
 <p>More formally, if this map contains a mapping from a key {@code k} to
 a value {@code v} such that {@code key.equals(k)}, then this method
 returns {@code v}; otherwise it returns {@code null}.  (There can be at
 most one such mapping.)
@throws NullPointerException if the specified key is null
jctools-core/src/main/java/org/jctools/maps/NonBlockingIdentityHashMap.java