code: func Marshal(ba BitArray) ([]byte, error) {
  	if eba, ok := ba.(*bitArray); ok {
  		return eba.Serialize()
  	} else if sba, ok := ba.(*sparseBitArray); ok {
  		return sba.Serialize()
  	} else {
  		return nil, errors.New("not a valid BitArray")
  	}
  }
docs: // Marshal takes a dense or sparse bit array and serializes it to a
  // byte slice.