// some complex cases of assignment compat of generic signatures that stress contextual signature instantiation interface I { (f: (x: T) => (y: S) => U): U } var g: (x: T) => (y: S) => I var h: (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U } g = h // ok