public void doRun() {
      GammaTxnLong ref = new GammaTxnLong(stm);

      // FatArrayTreeGammaTxn tx = new FatArrayTreeGammaTxn(stm);
      // FatArrayGammaTxn tx = new FatArrayGammaTxn(stm,1);
      FatMonoGammaTxn tx =
          new FatMonoGammaTxn(
              new GammaTxnConfig(stm)
                  .setReadLockMode(LockMode.Exclusive)
                  .setDirtyCheckEnabled(false));
      long startMs = System.currentTimeMillis();
      for (long k = 0; k < transactionCount; k++) {
        ref.openForWrite(tx, LOCKMODE_EXCLUSIVE).long_value++;
        tx.commit();
        tx.hardReset();

        // if (k % 100000000 == 0 && k > 0) {
        //    System.out.printf("%s is at %s\n", getName(), k);
        // }
      }

      assertEquals(transactionCount, ref.atomicGet());

      durationMs = System.currentTimeMillis() - startMs;
      System.out.printf("Multiverse> %s is finished in %s ms\n", getName(), durationMs);
    }