// @flow // naive unification causes combinatorial explosion here, // effectively hangs declare type Box = { map1(f: (x: T) => U): Box; map2(f: (x: T) => U): Box; map3(f: (x: T) => U): Box; map4(f: (x: T) => U): Box; map5(f: (x: T) => U): Box; } declare var bool: Box; declare function unbox(box: Box): A unbox(bool);