Currently, the nodes in the Switch menu (Shift+S) are generated from Node Wrangler's own long static list of categories and nodes.
A lack of updates to the list meant it was missing some nodes.
Cycles was still missing the Principled Hair BSDF, Principled Volume, and AOV Output.
A lack of context meant it was also possible to switch to nodes incompatible with the current engine.
Like EEVEE having many shaders from Cycles that aren't in it's regular Add menu.
Though if people like that 'feature', this diff should be rejected.
This changes to using the node_categories_iter utility which uses the correct list of available nodes from nodeitems_builtins.py.
The submenu classes are now procedurally generated and registered in the same fashion as the add menu, but just with a different operator in their draw function.
Removing the static lists required a couple changes outside of the Switch menu.
Mostly having to compare types using the verbose node.rna_type.identifier.