protected override void FillDescriptor(BitStream buffer)
 {
     buffer
     .Append((short)RecursiveDescriptorLength)
     .Append((byte)Interfaces.Count)
     .Append(Identifier)
     .Append(USBString.FromString(Description).Index)
     .Append((byte)(((SelfPowered ? 1 : 0) << 6) | ((RemoteWakeup ? 1 : 0) << 5)))
     .Append((byte)((MaximalPower + 1) / 2));
 }
 protected override void FillDescriptor(BitStream buffer)
 {
     buffer
     .Append(Identifier)
     .Append(0)     // TODO: implement alternate setting
     .Append((byte)Endpoints.Count)
     .Append((byte)Class)
     .Append(SubClass)
     .Append(Protocol)
     .Append(USBString.FromString(Description).Index);
 }
 protected override void FillDescriptor(BitStream buffer)
 {
     buffer
     .Append((short)CompatibleProtocolVersion)
     .Append((byte)Class)
     .Append(SubClass)
     .Append(Protocol)
     .Append((byte)MaximalPacketSize)
     .Append(VendorId)
     .Append(ProductId)
     .Append(DeviceReleaseNumber)
     .Append(USBString.FromString(ManufacturerName).Index)
     .Append(USBString.FromString(ProductName).Index)
     .Append(USBString.FromString(SerialNumber).Index)
     .Append((byte)Configurations.Count);
 }