interface Source { fun nextT(): T } fun demo(strs: Source) { // Source demo.strs: Source // │ │ val objects: Source = strs } interface Comparable { operator fun compareTo(other: T): Int } fun demo(x: Comparable) { // demo.x: Comparable // │ fun (Comparable).compareTo(T): Int // │ │ Double // │ │ │ x.compareTo(1.0) // Comparable demo.x: Comparable // │ │ val y: Comparable = x }