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