Задачи на generics в Kotlin. Часть 3
Сделайте inline fun <reified T> Gson-like parser stub.
Сделайте generic функцию groupByType.
Сделайте covariant interface Producer<out T>.
Сделайте contravariant Consumer<in T>.
Объясните in, out, invariant на примерах.
Сделайте generic TreeNode<T>.
Сделайте typealias для сложного generic типа.
Сделайте generic Cache<K, V>.
Сделайте fun <T> List<T>.secondOrDefault(default: T).
Комплексная generic задача.