code: func (msg *MsgFilterAdd) BtcEncode(w io.Writer, pver uint32, enc MessageEncoding) error {
  	if pver < BIP0037Version {
  		str := fmt.Sprintf("filteradd message invalid for protocol "+
  			"version %d", pver)
  		return messageError("MsgFilterAdd.BtcEncode", str)
  	}
  
  	size := len(msg.Data)
  	if size > MaxFilterAddDataSize {
  		str := fmt.Sprintf("filteradd size too large for message "+
  			"[size %v, max %v]", size, MaxFilterAddDataSize)
  		return messageError("MsgFilterAdd.BtcEncode", str)
  	}
  
  	return WriteVarBytes(w, pver, msg.Data)
  }
docs: // BtcEncode encodes the receiver to w using the bitcoin protocol encoding.
  // This is part of the Message interface implementation.