func NewPUBREL(opts *PUBRELOptions) (Packet, error) {
	if opts == nil {
		opts = &PUBRELOptions{}
	}
	if err := opts.validate(); err != nil {
		return nil, err
	}
	p := &PUBREL{
		PacketID: opts.PacketID,
	}
	p.setVariableHeader()
	p.setFixedHeader()
	return p, nil
}
NewPUBREL creates and returns a PUBREL Packet.
package packet
const lenPUBRELFixedHeader = 2
const lenPUBRELVariableHeader = 2
type PUBREL struct {
	base
	PacketID uint16
}
func (p *PUBREL) setFixedHeader() {
	p.fixedHeader = append(p.fixedHeader, TypePUBREL<<4|0x02)
	p.appendRemainingLength()
}
func (p *PUBREL) setVariableHeader() {
	p.variableHeader = append(p.variableHeader, encodeUint16(p.PacketID)...)
}