contract c {
    struct S {
        uint16 a;
        uint16 b;
        uint16[3] c;
        uint16[] d;
    }
    S[] data;

    function test() public returns (uint16, uint16, uint16, uint16) {
        S memory s;
        s.a = 2;
        s.b = 3;
        s.c[2] = 4;
        s.d = new uint16[](4);
        s.d[2] = 5;
        data.push(s);
        return (data[0].a, data[0].b, data[0].c[2], data[0].d[2]);
    }
}
// ====
// compileViaYul: also
// ----
// test() -> 2, 3, 4, 5
// gas irOptimized: 146270
// gas legacy: 190684
// gas legacyOptimized: 188256
