code: func (b *PayloadsBufferImpl) Push(payload *proto.Payload) {
  	b.mutex.Lock()
  	defer b.mutex.Unlock()
  
  	seqNum := payload.SeqNum
  
  	if seqNum < b.next || b.buf[seqNum] != nil {
  		logger.Debugf("Payload with sequence number = %d has been already processed", payload.SeqNum)
  		return
  	}
  
  	b.buf[seqNum] = payload
  
  	// Send notification that next sequence has arrived
  	if seqNum == b.next && len(b.readyChan) == 0 {
  		b.readyChan <- struct{}{}
  	}
  }
docs: // Push new payload into the buffer structure in case new arrived payload
  // sequence number is below the expected next block number payload will be
  // thrown away.
  // TODO return bool to indicate if payload was added or not, so that caller can log result.