We currently we partition expressions over a struct layouts ignoring the struct validity. This causes undefined values to be examined by the inner expression.
The other problem is we cannot round trip a file with type {a: {b: i32}?} we get back {a: {b: i32?}?}