Messing around with software transactional memory