code: protected void destroyOldEngineComponent(ComponentList component) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              SibTr.entry(tc, "destroyOldEngineComponent", component);
          }
  
          boolean removed = jmeComponents.remove(component);
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              SibTr.debug(tc, "destroyOldEngineComponent, component removed from jmeComponents?", removed);
          }
  
          JsEngineComponent engineComponent = component.getRef();
  
          if (_state == STATE_STARTING || _state == STATE_STARTED || _state == STATE_STOPPING || _state == STATE_STOPPING_MEMBER || _state == STATE_FAILED) {
              // Stop engine component
              engineComponent.stop(JsConstants.ME_STOP_IMMEDIATE);
          }
  
          if (_state != STATE_UNINITIALIZED && _state != STATE_DESTROYED) {
              // Destroy
              engineComponent.destroy();
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              SibTr.exit(tc, "destroyOldEngineComponent");
          }
      }
docs: Destroy an engine component that is to be deleted
  
  @param JsEngineComponent