// Generated from "nestedgenericclass/NestedGenericClass.java"
@file:Suppress(
 "ALWAYS_NULL",
 "PARAMETER_NAME_CHANGED_ON_OVERRIDE",
 "SENSELESS_COMPARISON",
 "UNCHECKED_CAST",
 "UNNECESSARY_LATEINIT",
 "UNNECESSARY_NOT_NULL_ASSERTION",
 "UNREACHABLE_CODE",
 "UNUSED_ANONYMOUS_PARAMETER",
 "UNUSED_PARAMETER",
 "UNUSED_VARIABLE",
 "USELESS_CAST",
 "VARIABLE_IN_SINGLETON_WITHOUT_THREAD_LOCAL",
 "VARIABLE_WITH_REDUNDANT_INITIALIZER",
 "REDUNDANT_ELSE_IN_WHEN")

package nestedgenericclass

import javaemul.lang.*
import kotlin.Any
import kotlin.Error
import kotlin.Exception
import kotlin.Number
import kotlin.Suppress
import kotlin.jvm.JvmField

open class NestedGenericClass<T> {
 open fun <S> `fun`(t: S) {
  open class E<S> internal constructor()
  open class F internal constructor() {
   @JvmField
   var f: S? = null
  }
  E<Number?>()
  F()
 }

 open fun <T_1> bar() {
  open class G<T> internal constructor() {
   open fun <T_1> bar() {
    open class H<T> internal constructor()
    H<Number?>()
   }
  }
  G<Error?>().bar<Any?>()
 }

 open fun test() {
  val n: NestedGenericClass<Number?> = NestedGenericClass<Number?>()
  val a: NestedGenericClass<Number?>.A<Error?> = n.A<Error?>()
  val b: NestedGenericClass<Number?>.A<Error?>.B<Exception?> = a.B<Exception?>()
  n.C()
  n.C().D()
 }

 open inner class A<T> {
  open inner class B<T> constructor()
 }

 open inner class C {
  @JvmField
  var c: T? = null

  open inner class D {
   @JvmField
   var d: T? = null
  }
 }

 open inner class RecursiveTypeVariable<T: NestedGenericClass<T>.RecursiveTypeVariable<T>?> internal constructor() {
  internal open fun test_pp_nestedgenericclass(t: T) {
   t!!.Inner()
  }

  open inner class Inner internal constructor()
 }
}
