ArrayStride can be larger than the declared struct size. We have no obvious solution for now, but warn about it in the MSL output for the time being.
A block name cannot alias with any name in its own scope, and it cannot alias with any other "global" name. To solve this, we need to complicate the name cache updates a little bit where we have a "primary" namespace and "secondary" namespace.