code: func NewSUBACKFromBytes(fixedHeader FixedHeader, remaining []byte) (Packet, error) {
  	// Validate the byte data.
  	if err := validateSUBACKBytes(fixedHeader, remaining); err != nil {
  		return nil, err
  	}
  
  	// Extract the variable header.
  	variableHeader := remaining[0:lenSUBACKVariableHeader]
  
  	// Extract the payload.
  	payload := remaining[lenSUBACKVariableHeader:]
  
  	// Decode the Packet Identifier.
  	// No error occur because of the precedent validation and
  	// the returned error is not be taken care of.
  	packetID, _ := decodeUint16(variableHeader)
  
  	// Create a PUBACK Packet.
  	p := &SUBACK{
  		PacketID:    packetID,
  		ReturnCodes: payload,
  	}
  
  	// Set the fixed header to the Packet.
  	p.fixedHeader = fixedHeader
  
  	// Set the variable header to the Packet.
  	p.variableHeader = variableHeader
  
  	// Set the payload to the Packet.
  	p.payload = payload
  
  	// Return the Packet.
  	return p, nil
  }
docs: // NewSUBACKFromBytes creates a SUBACK Packet
  // from the byte data and returns it.