public byte[] ToBytes()
{
List<byte> encodeBuffer = new List<byte>();
RdpbcgrEncoder.EncodeStructure(encodeBuffer, (ushort)capabilitySetType);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, lengthCapability);
RdpbcgrEncoder.EncodeBytes(encodeBuffer, terminalDescriptor);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, pad4octetsA);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, desktopSaveXGranularity);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, desktopSaveYGranularity);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, pad2octetsA);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, maximumOrderLevel);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, numberFonts);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, (ushort)orderFlags);
RdpbcgrEncoder.EncodeBytes(encodeBuffer, orderSupport);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, textFlags);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, (ushort)orderSupportExFlags);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, pad4octetsB);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, desktopSaveSize);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, pad2octetsC);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, pad2octetsD);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, textANSICodePage);
RdpbcgrEncoder.EncodeStructure(encodeBuffer, pad2octetsE);
return encodeBuffer.ToArray();
}