code: func (consenter *consenterImpl) HandleChain(support consensus.ConsenterSupport, metadata *cb.Metadata) (consensus.Chain, error) {
  	lastOffsetPersisted, lastOriginalOffsetProcessed, lastResubmittedConfigOffset := getOffsets(metadata.Value, support.ChainID())
  	ch, err := newChain(consenter, support, lastOffsetPersisted, lastOriginalOffsetProcessed, lastResubmittedConfigOffset)
  	if err != nil {
  		return nil, err
  	}
  	consenter.healthChecker.RegisterChecker(ch.channel.String(), ch)
  	return ch, nil
  }
docs: // HandleChain creates/returns a reference to a consensus.Chain object for the
  // given set of support resources. Implements the consensus.Consenter
  // interface. Called by consensus.newChainSupport(), which is itself called by
  // multichannel.NewManagerImpl() when ranging over the ledgerFactory's
  // existingChains.