```scala object Dependent{ def x: ( (i: Int) |=> Int ) = ??? def y: ( (i: Int) |=> Int ) = x } object Independent{ def x: ( Int |=> Int ) = ??? def y: ( Int |=> Int ) = x } object NarrowDependent{ def x: ( Int |=> Int ) = ??? def y: ( (i: Int) |=> Int ) = x } object WidenDependent{ def x: ( (i: Int) |=> Int ) = ??? def y: ( Int |=> Int ) = x } ``` Independent, NarrowDependent are compiled with no errors. Dependent, WidenDependent both fail to compile: Dependent: ```scala Found: => (i: Int) |=> Int(Dependent.x) Required: Int ``` WidenDependent: ```scala Found: => (i: Int) |=> Int(WidenDependent.x) Required: Int ```