private final TypeV putIfMatch( Object key, Object newVal, Object oldVal ) {
    if (oldVal == null || newVal == null) throw new NullPointerException();
    final Object res = putIfMatch0( this, _kvs, 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 key or value is null
jctools-core/src/main/java/org/jctools/maps/NonBlockingIdentityHashMap.java