public final TypeV putIfMatchAllowNull( Object key, Object newVal, Object oldVal ) {
    if( oldVal == null ) oldVal = TOMBSTONE;
    if( newVal == null ) newVal = TOMBSTONE;
    final TypeV res = (TypeV) putIfMatch0(this, _kvs, key, newVal, oldVal );
    assert !(res instanceof Prime);
    //assert res != null;
    return res == TOMBSTONE ? null : 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/NonBlockingHashMap.java