The LayoutInfo didn't propogate the offsets correctly for nested types, as well as other issues, like always overriding and updating element 0 in a list instead of the last (it incorrectly assumed there would only be one element).
I fixed up the issues in generating the LayoutInfo, and rewrote part of it to make it more robust.