@SuppressWarnings("unchecked")
  private TypeV putIfMatch( long key, Object newVal, Object oldVal ) {
    if (oldVal == null || newVal == null)  throw new NullPointerException();
    if( key == NO_KEY ) {
      Object curVal = _val_1;
      if( oldVal == NO_MATCH_OLD || // Do we care about expected-Value at all?
          curVal == oldVal ||       // No instant match already?
          (oldVal == MATCH_ANY && curVal != TOMBSTONE) ||
          oldVal.equals(curVal) ) { // Expensive equals check
        if( !CAS(_val_1_offset,curVal,newVal) ) // One shot CAS update attempt
          curVal = _val_1;                      // Failed; get failing witness
      }
      return curVal == TOMBSTONE ? null : (TypeV)curVal; // Return the last value present
    }
    final Object res = _chm.putIfMatch( key, newVal, oldVal );
    assert !(res instanceof Prime);
    assert res != null;
    return res == TOMBSTONE ? null : (TypeV)res;
  }
Atomically do a <code>put(key,newValue)</code> if-and-only-if the key is
 mapped a value which is <code>equals</code> to <code>oldValue</code>.
 @throws NullPointerException if the specified value is null
jctools-core/src/main/java/org/jctools/maps/NonBlockingHashMapLong.java