A transformation to split a global struct object.
This transformation targets a global struct object, i.e. a file-scope (i.e. top-level) object (i.e. a global variable), that has a struct type. The transformation splits it into two objects, of two new struct types, each with a subset of the original struct members, which are divided between the two new struct types (and objects). Member access expressions are replaced with new access expressions with the original object replaced with one of the new objects. The transformation will fail if the original object appears in any other sorts of expressions.
This transformation expects translation unit ensembles to be annotated with validation information. See the c$::validator.