code: func (p *BlockPuller) popBlock(seq uint64) *common.Block {
  	if len(p.blockBuff) == 0 {
  		return nil
  	}
  	block, rest := p.blockBuff[0], p.blockBuff[1:]
  	p.blockBuff = rest
  	// If the requested block sequence is the wrong one, discard the buffer
  	// to start fetching blocks all over again.
  	if seq != block.Header.Number {
  		p.blockBuff = nil
  		return nil
  	}
  	return block
  }
docs: // popBlock pops a block from the in-memory buffer and returns it,
  // or returns nil if the buffer is empty or the block doesn't match
  // the given wanted sequence.