docs: @Override
      public void initialRecoveryFailed(RecoveryAgent recoveryAgent, FailureScope failureScope) throws InvalidFailureScopeException {
          if (tc.isEntryEnabled())
              Tr.entry(tc, "initialRecoveryFailed", new Object[] { recoveryAgent, failureScope, this });
  
          final boolean removed = removeRecoveryRecord(recoveryAgent, failureScope);
  
          if (!removed) {
              if (tc.isEventEnabled())
                  Tr.event(tc, "The supplied FailureScope was not recognized as outstaning work for this RecoveryAgent");
              if (tc.isEntryEnabled())
                  Tr.exit(tc, "initialRecoveryFailed", "InvalidFailureScopeException");
              throw new InvalidFailureScopeException(null);
          }
  
          // Once recovery processing has been completed, we need to examine the results and take appropriate
          // action.
          if (!recoveryOutstanding(failureScope)) {
              // Drive the failure callback.
              if (_registeredCallbacks != null) {
                  driveCallBacks(CALLBACK_RECOVERYFAILED, failureScope);
              }
  
              // Ensure the failure map is clean for this failure scope.
              synchronized (_initFailedFailureScopes) {
                  _initFailedFailureScopes.remove(failureScope);
              }
  
              if (Configuration.localFailureScope().equals(failureScope)) {
                  // This is the local failure scope. Cause server termination
                  Configuration.getRecoveryLogComponent().localRecoveryFailed();
              } else {
                  // The is a peer failure scope. Terminate and de-activate to try and allow another member
                  // of the cluster to recover.
                  try {
                      directTermination(failureScope);
                  } catch (Exception exc) {
                  }
  
                  Configuration.getRecoveryLogComponent().deactivateGroup(failureScope, 60);
              }
          } else {
              // Record this failure so as to ensure correct processing later.
              synchronized (_initFailedFailureScopes) {
                  _initFailedFailureScopes.add(failureScope);
              }
  
              // Tell other services about this failure so they can take any required action.
              final int failedClientId = recoveryAgent.clientIdentifier();
  
              // Extract the 'values' collection from the _registeredRecoveryAgents map and create an iterator
              // from it. This iterator will return ArrayList objects each containing a set of RecoveryAgent
              // objects. Each ArrayList corrisponds to a different sequence priority value.
              final Collection registeredRecoveryAgentsValues = _registeredRecoveryAgents.values();
              final Iterator registeredRecoveryAgentsValuesIterator = registeredRecoveryAgentsValues.iterator();
  
              while (registeredRecoveryAgentsValuesIterator.hasNext()) {
                  // Extract the next ArrayList and create an iterator from it. This iterator will return RecoveryAgent
                  // objects that are registered at the same sequence priority value.
                  final ArrayList registeredRecoveryAgentsArray = (java.util.ArrayList) registeredRecoveryAgentsValuesIterator.next();
                  final Iterator registeredRecoveryAgentsArrayIterator = registeredRecoveryAgentsArray.iterator();
  
                  while (registeredRecoveryAgentsArrayIterator.hasNext()) {
                      // Extract the next RecoveryAgent object
                      final RecoveryAgent informRecoveryAgent = (RecoveryAgent) registeredRecoveryAgentsArrayIterator.next();
  
                      if (informRecoveryAgent.clientIdentifier() != failedClientId) {
                          informRecoveryAgent.agentReportedFailure(failedClientId, failureScope);
                      }
                  }
              }
          }
  
          if (tc.isEntryEnabled())
              Tr.exit(tc, "initialRecoveryFailed");
      }