actually take a look at clojures lockingtransaction.java