private void initHeaderQos(ByteBuf buff, int messageID, AbstractMessage.QOSType... qoss)
      throws IllegalAccessException {
    buff.clear()
        .writeByte(AbstractMessage.SUBACK << 4)
        .writeBytes(Utils.encodeRemainingLength(2 + qoss.length));

    buff.writeShort(messageID);
    for (AbstractMessage.QOSType qos : qoss) {
      buff.writeByte(qos.ordinal());
    }
  }