// @noflow // polymorphic recursive types type F = { f: F, x: X } type G = { x: number } type H = { x: string } function rec(x: F): G | H { return x; }