code: func (b *Generator) AddBloom(index uint, bloom types.Bloom) error {
  	// Make sure we're not adding more bloom filters than our capacity
  	if b.nextSec >= b.sections {
  		return errSectionOutOfBounds
  	}
  	if b.nextSec != index {
  		return errors.New("bloom filter with unexpected index")
  	}
  	// Rotate the bloom and insert into our collection
  	byteIndex := b.nextSec / 8
  	bitMask := byte(1) << byte(7-b.nextSec%8)
  
  	for i := 0; i < types.BloomBitLength; i++ {
  		bloomByteIndex := types.BloomByteLength - 1 - i/8
  		bloomBitMask := byte(1) << byte(i%8)
  
  		if (bloom[bloomByteIndex] & bloomBitMask) != 0 {
  			b.blooms[i][byteIndex] |= bitMask
  		}
  	}
  	b.nextSec++
  
  	return nil
  }
docs: // AddBloom takes a single bloom filter and sets the corresponding bit column
  // in memory accordingly.