code: public synchronized List<ChainData> getRunningChains(ChannelDataImpl parent) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "getRunningChains");
          }
          ChannelContainer channelContainer = null;
          List<ChainData> chainDataList = new ArrayList<ChainData>();
  
          // Iterate the children - they are in the runtime.
          Iterator<ChildChannelDataImpl> children = parent.children();
          while (children.hasNext()) {
              // Get the runtime channel container for this child.
              channelContainer = this.channelRunningMap.get(children.next().getName());
              for (Chain chain : channelContainer.getChainMap().values()) {
                  chainDataList.add(chain.getChainData());
              }
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "getRunningChains: " + chainDataList.size());
          }
          return chainDataList;
      }
docs: Extract a list of runtime chain data objects (including exclusively
  child channel data lists) that are using the input parent channel.
  
  @param parent
  The parent channel data object
  @return an arraylist of the runtime chains that include the channel