docs: protected final JsEngineComponent loadClass(String className, int stopSeq, boolean reportError) {
  
          String thisMethodName = "loadClass";
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              SibTr.entry(tc, thisMethodName, new Object[] { className, Integer.toString(stopSeq), Boolean.toString(reportError) });
          }
  
          Class myClass = null;
          JsEngineComponent retValue = null;
  
          int _seq = stopSeq;
          if (_seq < 0 || _seq > NUM_STOP_PHASES) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(tc, "loadClass: stopSeq is out of bounds " + stopSeq);
          } else {
              try {
                  myClass = Class.forName(className);
                  retValue = (JsEngineComponent) myClass.newInstance();
                  ComponentList compList = new ComponentList(className, retValue);
                  // No need to synchronize on jmeComponents to prevent concurrent
                  // modification from dynamic config and runtime callbacks, because
                  // jmeComponents is now a CopyOnWriteArrayList.
                  jmeComponents.add(compList);
                  stopSequence[_seq].addElement(compList);
              } catch (ClassNotFoundException e) {
                  // No FFDC code needed
                  if (reportError == true) {
                      com.ibm.ws.ffdc.FFDCFilter.processException(e, CLASS_NAME + ".loadClass", "3", this);
                      SibTr.error(tc, "CLASS_LOAD_FAILURE_SIAS0013", className);
                      SibTr.exception(tc, e);
                  }
  
              } catch (InstantiationException e) {
                  com.ibm.ws.ffdc.FFDCFilter.processException(e, CLASS_NAME + ".loadClass", "1", this);
                  if (reportError == true) {
                      SibTr.error(tc, "CLASS_LOAD_FAILURE_SIAS0013", className);
                      SibTr.exception(tc, e);
                  }
  
              } catch (Throwable e) {
                  com.ibm.ws.ffdc.FFDCFilter.processException(e, CLASS_NAME + ".loadClass", "2", this);
                  if (reportError == true) {
                      SibTr.error(tc, "CLASS_LOAD_FAILURE_SIAS0013", className);
  
                  }
              }
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              if (retValue == null)
                  SibTr.debug(tc, "loadClass: failed");
              else
                  SibTr.debug(tc, "loadClass: OK");
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              SibTr.exit(tc, thisMethodName, retValue);
          }
  
          return retValue;
      }