contract C {
    function f() external payable returns (uint) { assert(msg.value > 0); return 1; }
    function g() external payable returns (uint) { assert(msg.value > 0); return 2; }

    function h() public payable returns (uint) {
        return [this.f, this.g][0]{value: 1}();
    }
}
// ----
// h(), 1 ether -> 1
