This package provides support for distributed, nested transactions. It includes optimized transactions, which provide cheaper operation in some circumstances. For example, the NonblockingTransaction avoids object copying costs when the body of the transaction is known not to block; the BlockingTransaction avoids bookkeeping costs associated with nested transactions when the body of the transaction is known not to contain nested transactions.