contract C {
  struct I {
    uint b;
    uint c;
    function(uint) external returns (uint) x;
  }
  struct S {
    I a;
  }

  function o(uint a) external returns(uint) { return a+1; }

  function f() external returns (uint) {
    S memory s = S(I(1,2, this.o));
    return s.a.x(1);
  }
}



// ----
// f() -> 2
