library Lib {
    struct Data { uint a; uint[] b; }
    function set(Data storage _s) public
    {
        _s.a = 7;
        while (_s.b.length < 20)
            _s.b.push();
        _s.b[19] = 8;
    }
}
contract Test {
    mapping(string => Lib.Data) data;
    function f() public returns (uint a, uint b)
    {
        Lib.set(data["abc"]);
        a = data["abc"].a;
        b = data["abc"].b[19];
    }
}
// ====
// compileToEwasm: false
// ----
// library: Lib
// f() -> 7, 8
// gas irOptimized: 101818
// gas legacy: 101504
