Understanding USBCore for Arduino micro

As I vaguely recall, Keyboard, Mouse, USBMIDI, joystick, etc. register their interfaces with PluggableUSB. USBCore calls PluggableUSB to get the interface descriptors. USBCore sends the configuration descriptor with the number of interfaces which is tracked by PluggableUSB.

This was helpful when I was working in this area a few years ago.