code: private TransactionContext getOrCreateTransactionContext()
     {
        TransactionContext ctx = contexts.get();
        if (ctx == null)
        {
           // No transaction context exists so we create a new one
           ctx = new TransactionContext();
           contexts.set(ctx);
        }
        return ctx;
     }
docs: Gives the current {@link TransactionContext} from the ThreadLocal and create it doesn't exist