code: func (ba *bitArray) Equals(other BitArray) bool {
  	if other.Capacity() == 0 && ba.highest > 0 {
  		return false
  	}
  
  	if other.Capacity() == 0 && !ba.anyset {
  		return true
  	}
  
  	var selfIndex uint64
  	for iter := other.Blocks(); iter.Next(); {
  		toIndex, otherBlock := iter.Value()
  		if toIndex > selfIndex {
  			for i := selfIndex; i < toIndex; i++ {
  				if ba.blocks[i] > 0 {
  					return false
  				}
  			}
  		}
  
  		selfIndex = toIndex
  		if !ba.blocks[selfIndex].equals(otherBlock) {
  			return false
  		}
  		selfIndex++
  	}
  
  	lastIndex, _ := getIndexAndRemainder(ba.highest)
  	if lastIndex >= selfIndex {
  		return false
  	}
  
  	return true
  }
docs: // Equals returns a bool indicating if these two bit arrays are equal.