code: public synchronized void stop() {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) {
              Tr.event(this, tc, "stop chain " + this);
          }
  
          // We don't have to check enabled/disabled here: chains are always allowed to stop.
          if (currentConfig == null)
              return;
  
          // Quiesce and then stop the chain. The CFW internally uses a StopTimer for 
          // the quiesce/stop operation-- the listener method will be called when the chain
          // has stopped. So to see what happens next, visit chainStopped
          try {
              ChainData cd = cfw.getChain(chainName);
              if (cd != null) {
                  cfw.removeChain(cd);
              }
  
          } catch (ChainException e) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(this, tc, "Error stopping chain " + chainName, this, e);
              }
          }
      }
docs: Stop this chain