First of all, thanks for this project!
I think there's a bug in the HIDParser: when a report descriptor contains multiple reports, only collections for the very last report are retained. The others are overwritten during the parsing process, since at the beginning of every report the code starts storing collections at item 0.