pragma abicoder v2;
contract C {
struct S {
uint a;
function() external returns (S memory) sub;
}
function f() public pure returns (S memory) {
// ----