docs: public void distributeBefore()
      {
          if (tc.isEntryEnabled()) Tr.entry(tc, "distributeBefore", this);
          boolean setRollback = false;
  
          try
          {
              coreDistributeBefore();
          }
          catch (Throwable exc)
          {
              // No FFDC Code Needed.
              Tr.error(tc, "WTRN0074_SYNCHRONIZATION_EXCEPTION", new Object[] {"before_completion", exc});
              // PK19059 starts here
              _tran.setOriginalException(exc);
              // PK19059 ends here
              setRollback = true;           
          }
  
          // Finally issue the RRS syncs - z/OS always issues these even if RBO has occurred
          // during previous syncs.  Need to check with Matt if we need to do these even if the
          // overall transaction is set to RBO as we bypass distributeBefore in this case.
          final List RRSsyncs = _syncs[SYNC_TIER_RRS];
                  
          if (RRSsyncs != null)
          {       
              for (int j = 0; j < RRSsyncs.size(); j++ )  // d162354 array could grow
              {
                  final Synchronization sync = (Synchronization)RRSsyncs.get(j);
         
                  if (tc.isEventEnabled()) Tr.event(tc, "driving RRS before sync[" + j + "]", Util.identity(sync));
  
                  try
                  {
                      sync.beforeCompletion();
                  }
                  catch (Throwable exc)
                  {
                      // No FFDC Code Needed.
                      Tr.error(tc, "WTRN0074_SYNCHRONIZATION_EXCEPTION", new Object[] {"before_completion", exc});
                      setRollback = true;           
                  }      
              }                
  
              // If RRS syncs, one may be DB2 type 2, so issue thread switch
              // NativeJDBCDriverHelper.threadSwitch();              /* @367977A*/
          }
  
          //----------------------------------------------------------
          // If we've encountered an error, try to set rollback only
          //----------------------------------------------------------
          if (setRollback && _tran != null)
          {
              try
              {
                  _tran.setRollbackOnly();
              }
              catch (Exception ex)
              {
                  if (tc.isDebugEnabled()) Tr.debug(tc, "setRollbackOnly raised exception", ex);
              }
          }
  
          if (tc.isEntryEnabled()) Tr.exit(tc, "distributeBefore");
      }