There are two problems with researchMods;
1; The class itself is useless as a base class; the Apply() function is not virtual, and the specialAction field is private.
2; Assigning a researchMod type to the researchMods field in ResearchProjectDef XML leads to a 'Trying to parse to unknown data type' error.
Expected behaviour;
1; Apply() is virtual, and/or specialAction is public.
2; Setting workers in XML functions the same as setting workers for e.g. hediffs.
I'm gonna cut ResearchMod, it's unsupported old cruft.
Done, thanks.