code: func (ba *BlockAccumulator) Consume(ev *StreamEvent) *BlockExecution {
  	switch {
  	case ev.BeginBlock != nil:
  		ba.block = &BlockExecution{
  			Height: ev.BeginBlock.Height,
  			Header: ev.BeginBlock.Header,
  		}
  	case ev.BeginTx != nil, ev.Envelope != nil, ev.Event != nil, ev.EndTx != nil:
  		txe := ba.stack.Consume(ev)
  		if txe != nil {
  			ba.block.TxExecutions = append(ba.block.TxExecutions, txe)
  		}
  	case ev.EndBlock != nil:
  		return ba.block
  	}
  	return nil
  }
docs: // Consume will add the StreamEvent passed to the block accumulator and if the block complete is complete return the
  // BlockExecution, otherwise will return nil