public void SetCapabilities(byte[] capabilities)
{
if (capabilities == null)
throw new ArgumentNullException ();
int length = capabilities.Length;
if (length < CapabilitiesMin || length > CapabilitiesMax)
throw new ArgumentOutOfRangeException ("capabilities.Length",
length,
CapabilitiesMin.ToString() + " ≤ x ≤ " + CapabilitiesMax.ToString());
Array.Copy (capabilities, 0, this.buffer, IndexCapabilities, length);
UpdateFlags (SetProperties.Data3);
// size known here
this.count = PacketSizeSpecificMin + length;
}