interface A class B where T : A class C : A typealias GGG = C typealias HHH = GGG typealias JJJ = B fun fest() { } fun test() { val b1 = B<Int>() val b2 = B() val b3 = B<Any?>() val b4 = B<UnexistingType>()NL<Int>()NumberPhile val b5 = B<B<UnexistingType>>() fest<Boolean>() fest() fest() fest<JJJ>() } open class S class T : S() class P class P1 fun rest() { val o1 = S() val o2 = S() val o3 = S() val o4 = S, T>() val o5 = S, T>() val o6 = S, T>() val o7 = S, String>>() val o8 = S, Nothing>>() val o9 = P<String, P1<String, String>>() } class NumColl> typealias NL = NumColl> val test7 = NL()NumberPhile val test8 = NL() class NumberPhile(x: T) val np1 = NumberPhile(10) val np2 = NumberPhile("Test") class Test1, K : Any> class Test2> class Test3, K : Any> class Test4> class Test5, K : Any> class Test6> class Test7, K : CharSequence> class Test8in Any>> class Class typealias Alias = (Class) -> Boolean abstract class Base> {} class DerivedOut> {} class DerivedIn> {}