docs: @Override
      public RecoverableUnit createRecoverableUnit(FailureScope failureScope) throws LogClosedException, InternalLogException, LogIncompatibleException {
          if (tc.isEntryEnabled())
              Tr.entry(tc, "createRecoverableUnit", new Object[] { failureScope, this });
  
          // If this recovery log instance has been marked as incompatible then throw an exception
          // accordingly.
          if (incompatible()) {
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "createRecoverableUnit", "LogIncompatibleException");
              throw new LogIncompatibleException();
          }
  
          // If this recovery log instance has experienced a serious internal error then prevent this operation from
          // executing.
          if (failed()) {
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "createRecoverableUnit", "InternalLogException");
              throw new InternalLogException(null);
          }
  
          // Check that the log is actually open.
          if (_closesRequired == 0) {
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "createRecoverableUnit", "LogClosedException");
              throw new LogClosedException(null);
          }
  
          SQLRecoverableUnitImpl recoverableUnit = null;
  
          synchronized (this) {
              long identity = _recUnitIdTable.nextId(this);
              recoverableUnit = new SQLRecoverableUnitImpl(this, identity, failureScope);
              if (tc.isEventEnabled())
                  Tr.event(tc, "SQLMultiScopeRecoveryLog '" + _logName + "' created a new RecoverableUnit with id '" + identity + "'");
          }
  
          if (tc.isEntryEnabled())
              Tr.exit(tc, "createRecoverableUnit", recoverableUnit);
          return recoverableUnit;
      }