# Package org.multiverse.api

- Interface Summary
  Interface | Description
  --- | ---
  BackoffPolicy | A policy to be used when `Txn` or an atomic operation can't make any progress, e.g.
  Lock | The Lock provides access to pessimistic behavior of a `TxnObject`.
  OrElseBlock | The OrElse is responsible for executing the either block, or in case of a retry, the orelse block is executed.
  Stm | The main interface for software transactional memory.
  Txn | The unit of work for `Stm`.
  TxnConfig | Contains the transaction configuration used by a `Txn`.
  TxnExecutor | An TxnExecutor is responsible for executing an atomic callable.
  TxnFactory | A Factory responsible for creating a `Txn`.
  TxnFactoryBuilder | A Builder for creating a `TxnFactory` and `TxnExecutor`.
  TxnObject | The interface each transactional object needs to implement.

- Class Summary
  Class | Description
  --- | ---
  DefaultBackoffPolicy | A `BackoffPolicy` that does an 'exponential' backoff.
  GlobalStmInstance | A singleton that can be used for easy access to the `Stm` that is used globally.
  StmUtils | A utility class with convenience methods to access the `Stm` or `Txn`.
  TxnThreadLocal | A `ThreadLocal` that contains the current `Txn`.
  TxnThreadLocal.Container |

- Enum Summary
  Enum | Description
  --- | ---
  IsolationLevel | With the IsolationLevel you have a way to provide declarative control to guarantee isolation between transactions.
  LockMode | Using the LockMode one can control the pessimistic nature of a `Txn`.
  PropagationLevel | With the PropagationLevel you have control on how the `TxnExecutor` reacts on the existence or the non existence of a `Txn`.
  TraceLevel | Using the TraceLevel you get some feedback on what is happening inside a transaction.
  TxnStatus | An enumeration of all possible states a `Txn` can have.