library L { function at(uint[] memory a, uint i) internal pure returns (uint) { return a[i]; } } contract C { using L for uint[]; function secondItem() public returns (uint) { uint[] memory input = new uint[](2); input[0] = 0x11; input[1] = 0x22; return input.at(1); } } // ==== // compileViaYul: also // ---- // secondItem() -> 0x22