The goal of this patch is to allow us to use dynamic node declarations for various nodes in a future version without breaking forward compatibility. The same kind of change should be added to Blender 3.6. The code added here is not supposed to end up in `main`, so it has to be removed when merging the release branch. Pull Request: https://projects.blender.org/blender/blender/pulls/113497