docs: public synchronized boolean registerWithFFDCService()
      {
          boolean result = true;
          boolean abort = false;
          int retCode = 0;
          int packageIndex = 0;
  
          // Don't register more than once.
          if (ivRegisteredWithFFDC)
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                  Tr.event(tc, "InjectionDiagnosticModule already registered");
              result = false;
              abort = true;
          }
  
          // Don't register with FFDC Service if not initialized properly.
          if (ivInjectionEngine == null)
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                  Tr.event(tc, "InjectionDiagnosticModule not initialized: " +
                               "registration with FFDC Service not performed");
              result = false;
              abort = true;
          }
  
          // Register this class with the FFDC service under the various
          // package/class names required.
          while ((abort == false) && (packageIndex < ivPackageList.length))
          {
              retCode = FFDC.registerDiagnosticModule(this,
                                                      ivPackageList[packageIndex]);
  
              switch (retCode)
              {
                  case 0:
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                          Tr.event(tc, "InjectionDiagnosticModule successfully " +
                                       "registered for package " + ivPackageList[packageIndex]);
                      break;
  
                  case 1:
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                          Tr.event(tc, "Unable to register InjectionDiagnosticModule " +
                                       "as another diagnostic module has already been " +
                                       "registered with the package " +
                                       ivPackageList[packageIndex]);
                      result = false;
                      break;
  
                  case 2:
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                          Tr.event(tc, "Unable to register InjectionDiagnosticModule " +
                                       "as it does not support the minimum diagnostic module " +
                                       "interface.");
                      result = false;
                      abort = true;
                      break;
  
                  case 3:
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                          Tr.event(tc, "Unable to register InjectionDiagnosticModule " +
                                       "due to an unknown failure.");
                      result = false;
                      abort = true;
                      break;
  
                  default:
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                          Tr.event(tc, "InjectionDiagnosticModule registration with " +
                                       ivPackageList[packageIndex] + " resulted in an " +
                                       "unexpected return code: " + retCode);
                      result = false;
                      abort = true;
                      break;
              }
  
              packageIndex++;
          }
  
          return result;
      }