code: @Override
      public synchronized void startChain(ChainData chain) throws ChannelException, ChainException {
          String chainName = (null != chain) ? chain.getName() : null;
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "startChain: " + chainName);
          }
          if (null == chain) {
              throw new InvalidChainNameException("Null chain");
          }
  
          // Ensure we have an inbound chain.
          if (FlowType.OUTBOUND.equals(chain.getType())) {
              throw new InvalidChainNameException("Outbound chain cannot use this interface.");
          }
  
          startChainInternal(chain);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "startChain");
          }
      }
docs: /*
  @see
  com.ibm.wsspi.channelfw.ChannelFramework#startChain(com.ibm.websphere.channelfw
  .ChainData)