code: func (bc *BlockChain) PostChainEvents(events []interface{}, logs []*types.Log) {
  	// post event logs for further processing
  	if logs != nil {
  		bc.logsFeed.Send(logs)
  	}
  	for _, event := range events {
  		switch ev := event.(type) {
  		case ChainEvent:
  			bc.chainFeed.Send(ev)
  
  		case ChainHeadEvent:
  			bc.chainHeadFeed.Send(ev)
  
  		case ChainSideEvent:
  			bc.chainSideFeed.Send(ev)
  		}
  	}
  }
docs: // PostChainEvents iterates over the events generated by a chain insertion and
  // posts them into the event feed.
  // TODO: Should not expose PostChainEvents. The chain events should be posted in WriteBlock.