docs: protected void doBegin(Object transaction, TransactionDefinition definition) {
          ContextSourceAndDataSourceTransactionObject actualTransactionObject = (ContextSourceAndDataSourceTransactionObject) transaction;
  
          super.doBegin(actualTransactionObject.getDataSourceTransactionObject(),
                  definition);
          try {
              ldapManagerDelegate.doBegin(actualTransactionObject
                      .getLdapTransactionObject(), definition);
          } catch (TransactionException e) {
              // Failed to start LDAP transaction - make sure we clean up properly
              super.doCleanupAfterCompletion(actualTransactionObject.getDataSourceTransactionObject());
              throw e;
          }
      }