Instead of downcasting directly, we should almost always go through unifyNode(). We need to handle cases where the user typedefs every type to new type names.
WHLSL is no longer relevant.