docs: public boolean put(final T key, final T val, final PutFlags... op) {
      if (SHOULD_CHECK) {
        requireNonNull(key);
        requireNonNull(val);
        checkNotClosed();
        txn.checkReady();
        txn.checkWritesAllowed();
      }
      kv.keyIn(key);
      kv.valIn(val);
      final int mask = mask(op);
      final int rc = LIB.mdb_cursor_put(ptrCursor, kv.pointerKey(),
                                        kv.pointerVal(), mask);
      if (rc == MDB_KEYEXIST) {
        if (isSet(mask, MDB_NOOVERWRITE)) {
          kv.valOut(); // marked as in,out in LMDB C docs
        } else if (!isSet(mask, MDB_NODUPDATA)) {
          checkRc(rc);
        }
        return false;
      }
      checkRc(rc);
      return true;
    }