// Generated from "j2kt/NonNullVariables.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 j2kt

import javaemul.lang.*
import kotlin.Any
import kotlin.Boolean
import kotlin.Byte
import kotlin.Char
import kotlin.Double
import kotlin.Float
import kotlin.Int
import kotlin.Long
import kotlin.Short
import kotlin.String
import kotlin.Suppress

open class NonNullVariables {
 open fun testFinalNonNull(nonNull: Any) {
  val o: Any = nonNull
  o.hashCode()
 }

 open fun testEffectivelyFinalNonNull(nonNull: Any) {
  val o: Any = nonNull
  o.hashCode()
 }

 open fun testNonFinalNonNull(nonNull: Any) {
  var o: Any = nonNull
  o.hashCode()
  o = nonNull
  o.hashCode()
 }

 open fun testFinalNullable(nullable: Any?) {
  val o: Any? = nullable
  o!!.hashCode()
 }

 open fun testEffectivelyFinalNullable(nullable: Any?) {
  val o: Any? = nullable
  o!!.hashCode()
 }

 open fun testNonFinalNullable(nonNull: Any, nullable: Any?) {
  var o: Any? = nonNull
  o!!.hashCode()
  o = nullable
  o!!.hashCode()
 }

 open fun testSelfAssignmentNonNull(nonNull: Any) {
  var o: Any = nonNull
  o = o
 }

 open fun testSelfAssignmentNullable(nullable: Any?) {
  var o: Any? = nullable
  o = o
 }

 open fun testMutualAssignmentNonNull(nonNull: Any) {
  var o1: Any = nonNull
  var o2: Any = nonNull
  val tmp: Any = o1
  o1 = o2
  o2 = o1
 }

 open fun testMutualAssignmentNullable(nonNull: Any, nullable: Any?) {
  var o1: Any? = nonNull
  var o2: Any? = nullable
  val tmp: Any? = o1
  o1 = o2
  o2 = o1
 }

 open fun <T: String?> testGenericNullable(supplier: Supplier<T>) {
  val value: T? = supplier.get()
  value!!.hashCode()
 }

 open fun <T: String> testGenericNonNull(supplier: Supplier<T>) {
  val value: T? = supplier.get()
  value!!.hashCode()
 }

 open fun <T: String> testGenericNonNullParameterNullable(supplier: Supplier<T?>) {
  val value: T? = supplier.get()
  value!!.hashCode()
 }

 open fun testParameterizedNullable(supplier: Supplier<String?>) {
  val value: String? = supplier.get()
  value!!.hashCode()
 }

 open fun testParameterizedNonNull(supplier: Supplier<String>) {
  val value: String? = supplier.get()
  value!!.hashCode()
 }

 open fun testWildcardNullable(supplier: Supplier<out String?>) {
  val value: String? = supplier.get()
  value!!.hashCode()
 }

 open fun testWildcardNonNull(supplier: Supplier<out String>) {
  val value: String? = supplier.get()
  value!!.hashCode()
 }

 open fun testBoxed(b: Byte, o: Short, i: Int, l: Long, f: Float, d: Double, bool: Boolean, ch: Char) {
  val b1: Byte? = b
  val o1: Short = o
  val i1: Int? = i
  val l1: Long? = l
  val f1: Float? = f
  val d1: Double? = d
  val bool1: Boolean? = bool
  val ch1: Char? = ch
 }

 fun interface Supplier<V> {
  fun get(): V
 }
}
