docs: public long toFlagsBitSet() {
        PersistenceMode persistenceMode = (PersistenceMode) params[PersistenceMode.ID].get();
        LockingMode lockingMode = (LockingMode) params[LockingMode.ID].get();
        ExecutionMode executionMode = (ExecutionMode) params[ExecutionMode.ID].get();
        StatisticsMode statisticsMode = (StatisticsMode) params[StatisticsMode.ID].get();
        ReplicationMode replicationMode = (ReplicationMode) params[ReplicationMode.ID].get();
        long flagsBitSet = 0;
        switch (persistenceMode) {
           case SKIP_PERSIST:
              flagsBitSet |= FlagBitSets.SKIP_CACHE_STORE;
              break;
           case SKIP_LOAD:
              flagsBitSet |= FlagBitSets.SKIP_CACHE_LOAD;
              break;
           case SKIP:
              flagsBitSet |= FlagBitSets.SKIP_CACHE_LOAD | FlagBitSets.SKIP_CACHE_STORE;
              break;
        }
        switch (lockingMode) {
           case SKIP:
              flagsBitSet |= FlagBitSets.SKIP_LOCKING;
              break;
           case TRY_LOCK:
              flagsBitSet |= FlagBitSets.ZERO_LOCK_ACQUISITION_TIMEOUT;
              break;
        }
        switch (executionMode) {
           case LOCAL:
              flagsBitSet |= FlagBitSets.CACHE_MODE_LOCAL;
              break;
           case LOCAL_SITE:
              flagsBitSet |= FlagBitSets.SKIP_XSITE_BACKUP;
              break;
        }
        if (statisticsMode == StatisticsMode.SKIP) {
           flagsBitSet |= FlagBitSets.SKIP_STATISTICS;
        }
        switch (replicationMode) {
           case SYNC:
              flagsBitSet |= FlagBitSets.FORCE_SYNCHRONOUS;
              break;
           case ASYNC:
              flagsBitSet |= FlagBitSets.FORCE_ASYNCHRONOUS;
              break;
        }
        return flagsBitSet;
     }