interface I {} contract E is I {} library L { function foo(I i) internal pure returns (uint) { return 42; } } contract C { using L for I; function test() public returns (uint) { E e = new E(); return I(e).foo(); } } // ==== // compileViaYul: also // ---- // test() -> 42