class A1<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class A2<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class A3<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class A4<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class A5<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class A6<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class A7<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class B1<T : Any> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : Any> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class B2<T : Any> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : Any> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class B3<T : Any> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : Any> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class B4<T : Any> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : Any> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class B5<T : Any> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : Any> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class B6<T : Any> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : Any> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class B7<T : Any> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : Any> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class C1<T : CharSequence> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : CharSequence> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class C2<T : CharSequence> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : CharSequence> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class C3<T : CharSequence> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : CharSequence> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class C4<T : CharSequence> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : CharSequence> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class C5<T : CharSequence> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : CharSequence> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class C6<T : CharSequence> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : CharSequence> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class C7<T : CharSequence> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : CharSequence> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class D1<T : String> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : String> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class D2<T : String> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : String> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class D3<T : String> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : String> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class D4<T : String> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : String> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class D5<T : String> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : String> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class D6<T : String> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : String> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class D7<T : String> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T : String> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class E1<String> {
    val property: String get() = TODO()
    fun function(value: String): String = value

    class Nested<String> {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }

    inner class Inner {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }
}

class E2<String> {
    val property: String get() = TODO()
    fun function(value: String): String = value

    class Nested<String> {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }

    inner class Inner {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }
}

class E3<String> {
    val property: String get() = TODO()
    fun function(value: String): String = value

    class Nested<String> {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }

    inner class Inner {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }
}

class E4<String> {
    val property: String get() = TODO()
    fun function(value: String): String = value

    class Nested<String> {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }

    inner class Inner {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }
}

class E5<String> {
    val property: String get() = TODO()
    fun function(value: String): String = value

    class Nested<String> {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }

    inner class Inner {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }
}

class E6<String> {
    val property: String get() = TODO()
    fun function(value: String): String = value

    class Nested<String> {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }

    inner class Inner {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }
}

class E7<String> {
    val property: String get() = TODO()
    fun function(value: String): String = value

    class Nested<String> {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }

    inner class Inner {
        val property: String get() = TODO()
        fun function(value: String): String = value
    }
}

class F1<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class F2<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class F3<T> {
    val property: T get() = TODO()
    fun function(value: T): T = value

    class Nested<T> {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }

    inner class Inner {
        val property: T get() = TODO()
        fun function(value: T): T = value
    }
}

class G1<T, R> {
    val property1: T get() = TODO()
    val property2: R get() = TODO()
    fun function(value: T): R = TODO()

    class Nested<T, R> {
        val property1: T get() = TODO()
        val property2: R get() = TODO()
        fun function(value: T): R = TODO()
    }

    inner class Inner {
        val property1: T get() = TODO()
        val property2: R get() = TODO()
        fun function(value: T): R = TODO()
    }
}

class G2<T, R> {
    val property1: T get() = TODO()
    val property2: R get() = TODO()
    fun function(value: T): R = TODO()

    class Nested<T, R> {
        val property1: T get() = TODO()
        val property2: R get() = TODO()
        fun function(value: T): R = TODO()
    }

    inner class Inner {
        val property1: T get() = TODO()
        val property2: R get() = TODO()
        fun function(value: T): R = TODO()
    }
}

class G3<T, R> {
    val property1: T get() = TODO()
    val property2: R get() = TODO()
    fun function(value: T): R = TODO()

    class Nested<T, R> {
        val property1: T get() = TODO()
        val property2: R get() = TODO()
        fun function(value: T): R = TODO()
    }

    inner class Inner {
        val property1: T get() = TODO()
        val property2: R get() = TODO()
        fun function(value: T): R = TODO()
    }
}

class G4<T, R> {
    val property1: T get() = TODO()
    val property2: R get() = TODO()
    fun function(value: T): R = TODO()

    class Nested<T, R> {
        val property1: T get() = TODO()
        val property2: R get() = TODO()
        fun function(value: T): R = TODO()
    }

    inner class Inner {
        val property1: T get() = TODO()
        val property2: R get() = TODO()
        fun function(value: T): R = TODO()
    }
}

class H1<T> {
    val dependentProperty: T get() = TODO()
    fun dependentFunction(value: T): T = value

    val T.dependentExtensionProperty: T get() = this
    fun T.dependentExtensionFunction(): T = this

    fun <T> independentFunction(): T = TODO()

    val <T> T.independentExtensionProperty: T get() = this
    fun <T> T.independentExtensionFunction(): T = this
}

class H2<T> {
    val dependentProperty: T get() = TODO()
    fun dependentFunction(value: T): T = value

    val T.dependentExtensionProperty: T get() = this
    fun T.dependentExtensionFunction(): T = this

    fun <T> independentFunction(): T = TODO()

    val <T> T.independentExtensionProperty: T get() = this
    fun <T> T.independentExtensionFunction(): T = this
}

class I<T : I<T>> {
    val property: T get() = TODO()
    fun function(value: T): T = value
}

interface J1<A> {
    actual fun a(): A
}

interface J2<A, B> {
    actual fun a(b: B): A
    actual fun b(a: A): B
}

interface J3<A, B, C> {
    actual fun a(b: B, c: C): A
    actual fun b(a: A, c: C): B
    actual fun c(a: A, b: B): C
}

class K<A, B : A, C : J1<B>, D : J2<C, A>> : J3<D, C, B> {
    override fun a(b: C, c: B): D = TODO()
    override fun b(a: D, c: B): C = TODO()
    override fun c(a: D, b: C): B = TODO()
    inner class Inner<C, D : C, E : J2<C, D>> {
        fun dependentFunction(value: A): E = TODO()
        fun <A : CharSequence, E : Number> independentFunction(value: A): E = TODO()
    }
}
