code: func (msg *MsgReject) BtcDecode(r io.Reader, pver uint32, enc MessageEncoding) error {
  	if pver < RejectVersion {
  		str := fmt.Sprintf("reject message invalid for protocol "+
  			"version %d", pver)
  		return messageError("MsgReject.BtcDecode", str)
  	}
  
  	// Command that was rejected.
  	cmd, err := ReadVarString(r, pver)
  	if err != nil {
  		return err
  	}
  	msg.Cmd = cmd
  
  	// Code indicating why the command was rejected.
  	err = readElement(r, &msg.Code)
  	if err != nil {
  		return err
  	}
  
  	// Human readable string with specific details (over and above the
  	// reject code above) about why the command was rejected.
  	reason, err := ReadVarString(r, pver)
  	if err != nil {
  		return err
  	}
  	msg.Reason = reason
  
  	// CmdBlock and CmdTx messages have an additional hash field that
  	// identifies the specific block or transaction.
  	if msg.Cmd == CmdBlock || msg.Cmd == CmdTx {
  		err := readElement(r, &msg.Hash)
  		if err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // BtcDecode decodes r using the bitcoin protocol encoding into the receiver.
  // This is part of the Message interface implementation.