// Generated from "nullability/defaultnullable/DefaultNullable.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 nullability.defaultnullable

import javaemul.lang.*
import java.lang.RuntimeException
import java.lang.Void
import java.util.ArrayList
import jsinterop.annotations.JsMethod
import kotlin.Any
import kotlin.Array
import kotlin.Boolean
import kotlin.Double
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.arrayOf
import kotlin.arrayOfNulls
import kotlin.collections.MutableList
import kotlin.jvm.JvmField
import kotlin.jvm.JvmStatic

open class DefaultNullable {
 private var f1: String? = "Hello"

 private var f2: String? = null

 private var f3: String? = null

 private var f4: MutableList<String?>? = ArrayList<String>() as MutableList<String?>?

 private var f5: MutableList<String?>? = ArrayList<String>() as MutableList<String?>?

 private var f6: MutableList<String?>? = ArrayList<String?>()

 private var f7: MutableList<String?>? = null

 private var f8: Array<String?>? = arrayOf<String?>()

 private var f9: Array<String?>? = arrayOf<String?>()

 private var f10: Array<String?>? = arrayOf<String?>()

 private var f11: Void? = null

 private var f12: Any = Any()

 open fun m1(a: String?, b: MutableList<Double?>?): String? {
  return ""
 }

 private var f13: Any

 private var f14: Any? = null

 constructor() {
  this.f13 = Any()
 }

 open fun m2(a: String?, b: MutableList<Double?>?): String? {
  return null
 }

 @JsMethod
 open fun m3(vararg args: String?) {
  val args_1: Array<String?>? = args as Array<String?>?
 }

 internal open fun <T: NullableBound<T>?> methodWithNullableBound_pp_nullability_defaultnullable() {}

 internal open fun <T: NonNullableBound<T>> methodWithNonNullableBound_pp_nullability_defaultnullable() {}

 open fun casts() {
  val listOfString: MutableList<String?>? = null as MutableList<String?>?
  val nullableListOfString: MutableList<String?>? = null as MutableList<String?>?
  val listOfNullableString: MutableList<String?>? = null as MutableList<String?>?
  val nullableListOfNullableString: MutableList<String?>? = null as MutableList<String?>?
  val nonNullListOfString: MutableList<String?>? = null as MutableList<String?>?
  val listOfNonNullString: MutableList<String>? = null as MutableList<String>?
  val nonNullListOfNonNullString: MutableList<String>? = null as MutableList<String>?
 }

 companion object {
  @JvmStatic
  internal fun <N> genericNullableMethod_pp_nullability_defaultnullable(o: ParameterizedNullable<N>?, n: N?) {
   o!!.setNullable_pp_nullability_defaultnullable(n)
   o!!.setNonNull_pp_nullability_defaultnullable(
    n!!,
   )
   o!!.setDefaultNullability_pp_nullability_defaultnullable(
    n as N,
   )
   o!!.getNullable_pp_nullability_defaultnullable()!!.hashCode()
   o!!.getNonNullable_pp_nullability_defaultnullable().hashCode()
   o!!.getDefaultNullability_pp_nullability_defaultnullable()!!.hashCode()
   o!!.nullable_pp_nullability_defaultnullable = n
   o!!.nonNullable_pp_nullability_defaultnullable = n!!
   o!!.defaultNullability_pp_nullability_defaultnullable = n as N
   o!!.nullable_pp_nullability_defaultnullable!!.hashCode()
   o!!.nonNullable_pp_nullability_defaultnullable.hashCode()
   o!!.defaultNullability_pp_nullability_defaultnullable!!.hashCode()
  }

  @JvmStatic
  internal fun <N: Any> genericNonNullMethod_pp_nullability_defaultnullable(o: ParameterizedNonNullable<N>?, n: N) {
   o!!.setNullable_pp_nullability_defaultnullable(n)
   o!!.setNonNull_pp_nullability_defaultnullable(n)
   o!!.setDefaultNullability_pp_nullability_defaultnullable(n)
   o!!.getNullable_pp_nullability_defaultnullable()!!.hashCode()
   o!!.getNonNullable_pp_nullability_defaultnullable().hashCode()
   o!!.getDefaultNullability_pp_nullability_defaultnullable().hashCode()
   o!!.nullable_pp_nullability_defaultnullable = n
   o!!.nonNullable_pp_nullability_defaultnullable = n
   o!!.defaultNullability_pp_nullability_defaultnullable = n
   o!!.nullable_pp_nullability_defaultnullable!!.hashCode()
   o!!.nonNullable_pp_nullability_defaultnullable.hashCode()
   o!!.defaultNullability_pp_nullability_defaultnullable.hashCode()
  }

  @JvmStatic
  internal fun <N> genericDefaultNullabilityMethod_pp_nullability_defaultnullable(o: ParameterizedDefaultNullability<N>?, n: N) {
   o!!.setNullable_pp_nullability_defaultnullable(n)
   o!!.setNonNull_pp_nullability_defaultnullable(
    n!!,
   )
   o!!.setDefaultNullability_pp_nullability_defaultnullable(n)
   o!!.getNullable_pp_nullability_defaultnullable()!!.hashCode()
   o!!.getNonNullable_pp_nullability_defaultnullable().hashCode()
   o!!.getDefaultNullability_pp_nullability_defaultnullable()!!.hashCode()
   o!!.nullable_pp_nullability_defaultnullable = n
   o!!.nonNullable_pp_nullability_defaultnullable = n!!
   o!!.defaultNullability_pp_nullability_defaultnullable = n
   o!!.nullable_pp_nullability_defaultnullable!!.hashCode()
   o!!.nonNullable_pp_nullability_defaultnullable.hashCode()
   o!!.defaultNullability_pp_nullability_defaultnullable!!.hashCode()
  }

  @JvmStatic
  internal fun parametrizedNullableMethod_pp_nullability_defaultnullable(o: ParameterizedNullable<String?>?, s: String?) {
   o!!.setNullable_pp_nullability_defaultnullable(s)
   o!!.setNonNull_pp_nullability_defaultnullable(
    s!!,
   )
   o!!.setDefaultNullability_pp_nullability_defaultnullable(s)
   o!!.getNullable_pp_nullability_defaultnullable()!!.length
   o!!.getNonNullable_pp_nullability_defaultnullable().length
   o!!.getDefaultNullability_pp_nullability_defaultnullable()!!.length
   o!!.nullable_pp_nullability_defaultnullable = s
   o!!.nonNullable_pp_nullability_defaultnullable = s!!
   o!!.defaultNullability_pp_nullability_defaultnullable = s
   o!!.nullable_pp_nullability_defaultnullable!!.length
   o!!.nonNullable_pp_nullability_defaultnullable.length
   o!!.defaultNullability_pp_nullability_defaultnullable!!.length
  }

  @JvmStatic
  internal fun parametrizedNonNullMethod_pp_nullability_defaultnullable(o: ParameterizedNonNullable<String>?, s: String) {
   o!!.setNullable_pp_nullability_defaultnullable(s)
   o!!.setNonNull_pp_nullability_defaultnullable(s)
   o!!.setDefaultNullability_pp_nullability_defaultnullable(s)
   o!!.getNullable_pp_nullability_defaultnullable()!!.length
   o!!.getNonNullable_pp_nullability_defaultnullable().length
   o!!.getDefaultNullability_pp_nullability_defaultnullable().length
   o!!.nullable_pp_nullability_defaultnullable = s
   o!!.nonNullable_pp_nullability_defaultnullable = s
   o!!.defaultNullability_pp_nullability_defaultnullable = s
   o!!.nullable_pp_nullability_defaultnullable!!.length
   o!!.nonNullable_pp_nullability_defaultnullable.length
   o!!.defaultNullability_pp_nullability_defaultnullable.length
  }

  @JvmStatic
  internal fun parametrizedDefaultNullabilityMethod_pp_nullability_defaultnullable(o: ParameterizedDefaultNullability<String?>?, s: String?) {
   o!!.setNullable_pp_nullability_defaultnullable(s)
   o!!.setNonNull_pp_nullability_defaultnullable(
    s!!,
   )
   o!!.setDefaultNullability_pp_nullability_defaultnullable(s)
   o!!.getNullable_pp_nullability_defaultnullable()!!.length
   o!!.getNonNullable_pp_nullability_defaultnullable().length
   o!!.getDefaultNullability_pp_nullability_defaultnullable()!!.length
   o!!.nullable_pp_nullability_defaultnullable = s
   o!!.nonNullable_pp_nullability_defaultnullable = s!!
   o!!.defaultNullability_pp_nullability_defaultnullable = s
   o!!.nullable_pp_nullability_defaultnullable!!.length
   o!!.nonNullable_pp_nullability_defaultnullable.length
   o!!.defaultNullability_pp_nullability_defaultnullable!!.length
  }

  @JvmStatic
  internal fun testListOfWildcard_pp_nullability_defaultnullable(l: MutableList<*>?) {}

  @JvmStatic
  internal fun testListOfWildcardExtendsDefaultNullabilityObject_pp_nullability_defaultnullable(l: MutableList<*>?) {}

  @JvmStatic
  internal fun testListOfWildcardExtendsNullableObject_pp_nullability_defaultnullable(l: MutableList<*>?) {}

  @JvmStatic
  internal fun testListOfWildcardExtendsNonNullObject_pp_nullability_defaultnullable(l: MutableList<out Any>?) {}

  @JvmStatic
  internal fun testListOfWildcardExtendsDefaultNullabilityString_pp_nullability_defaultnullable(l: MutableList<out String?>?) {}

  @JvmStatic
  internal fun testListOfWildcardExtendsNullableString_pp_nullability_defaultnullable(l: MutableList<out String?>?) {}

  @JvmStatic
  internal fun testListOfWildcardExtendsNonNullString_pp_nullability_defaultnullable(l: MutableList<out String>?) {}

  @JvmStatic
  internal fun <T> testListOfWildcardExtendsDefaultNullabilityVariable_pp_nullability_defaultnullable(l: MutableList<out T>?) {}

  @JvmStatic
  internal fun <T> testListOfWildcardExtendsNullableVariable_pp_nullability_defaultnullable(l: MutableList<out T?>?) {}

  @JvmStatic
  internal fun testListOfWildcardSuperDefaultNullabilityObject_pp_nullability_defaultnullable(l: MutableList<in Any?>?) {}

  @JvmStatic
  internal fun testListOfWildcardSuperNullableObject_pp_nullability_defaultnullable(l: MutableList<in Any?>?) {}

  @JvmStatic
  internal fun testListOfWildcardSuperNonNullObject_pp_nullability_defaultnullable(l: MutableList<in Any>?) {}

  @JvmStatic
  internal fun testListOfWildcardSuperDefaultNullabilityString_pp_nullability_defaultnullable(l: MutableList<in String?>?) {}

  @JvmStatic
  internal fun testListOfWildcardSuperNullableString_pp_nullability_defaultnullable(l: MutableList<in String?>?) {}

  @JvmStatic
  internal fun testListOfWildcardSuperNonNullString_pp_nullability_defaultnullable(l: MutableList<in String>?) {}

  @JvmStatic
  internal fun <T> testListOfWildcardSuperDefaultNullabilityVariable_pp_nullability_defaultnullable(l: MutableList<in T>?) {}

  @JvmStatic
  internal fun <T> testListOfWildcardSuperNullableVariable_pp_nullability_defaultnullable(l: MutableList<in T?>?) {}

  @JvmStatic
  internal fun testLocalNullability_pp_nullability_defaultnullable() {
   val stringConsumer: Consumer<String?>? = null as Consumer<String?>?
   val nullableStringConsumer: Consumer<String?>? = null as Consumer<String?>?
   val nonNullStringConsumer: Consumer<String>? = null as Consumer<String>?
   val b: Boolean = null is Consumer<*>
  }

  @JvmStatic
  internal fun testNonNullableLambdas_pp_nullability_defaultnullable() {
   val lambda: NullMarkedConsumer<String?> = NullMarkedConsumer { s: String? ->
   }
   val constructorReference: NullMarkedSupplier<String?> = NullMarkedSupplier {
    return@NullMarkedSupplier String()
   } as NullMarkedSupplier<String?>
   val newArrayReference: NullMarkedIntFunction<Array<String?>?> = NullMarkedIntFunction { arg0: Int ->
    return@NullMarkedIntFunction arrayOfNulls<String>(arg0)
   } as NullMarkedIntFunction<Array<String?>?>
  }

  @JvmStatic
  internal fun accept_pp_nullability_defaultnullable(s: String?) {}
 }

 interface NullableBound<T: NullableBound<T>?>

 interface NonNullableBound<T: NonNullableBound<T>>

 interface NullableBoundWithNonNullArgument: NullableBound<NullableBoundWithNonNullArgument>

 interface NullableBoundWithNullableArgument: NullableBound<NullableBoundWithNullableArgument?>

 interface NonNullBoundWithNonNullArgument: NonNullableBound<NonNullBoundWithNonNullArgument>

 interface NonNullBoundWithNullableArgument: NonNullableBound<NonNullBoundWithNullableArgument>

 open class ParameterizedDefaultNullability<N> {
  @JvmField
  internal var nullable_pp_nullability_defaultnullable: N? = null

  @JvmField
  internal var nonNullable_pp_nullability_defaultnullable: N & Any

  @JvmField
  internal var defaultNullability_pp_nullability_defaultnullable: N

  internal constructor(nonNullable: N & Any, defaultNullability: N) {
   this.nonNullable_pp_nullability_defaultnullable = nonNullable
   this.defaultNullability_pp_nullability_defaultnullable = defaultNullability
  }

  internal open fun getNullable_pp_nullability_defaultnullable(): N? {
   return null
  }

  internal open fun getNonNullable_pp_nullability_defaultnullable(): N & Any {
   throw RuntimeException()
  }

  internal open fun getDefaultNullability_pp_nullability_defaultnullable(): N {
   return null as N
  }

  internal open fun setNullable_pp_nullability_defaultnullable(n: N?) {}

  internal open fun setNonNull_pp_nullability_defaultnullable(n: N & Any) {}

  internal open fun setDefaultNullability_pp_nullability_defaultnullable(n: N) {}
 }

 open class ParameterizedNullable<N> {
  @JvmField
  internal var nullable_pp_nullability_defaultnullable: N? = null

  @JvmField
  internal var nonNullable_pp_nullability_defaultnullable: N & Any

  @JvmField
  internal var defaultNullability_pp_nullability_defaultnullable: N

  internal constructor(nonNullable: N & Any, defaultNullability: N) {
   this.nonNullable_pp_nullability_defaultnullable = nonNullable
   this.defaultNullability_pp_nullability_defaultnullable = defaultNullability
  }

  internal open fun getNullable_pp_nullability_defaultnullable(): N? {
   return null
  }

  internal open fun getNonNullable_pp_nullability_defaultnullable(): N & Any {
   throw RuntimeException()
  }

  internal open fun getDefaultNullability_pp_nullability_defaultnullable(): N {
   return null as N
  }

  internal open fun setNullable_pp_nullability_defaultnullable(n: N?) {}

  internal open fun setNonNull_pp_nullability_defaultnullable(n: N & Any) {}

  internal open fun setDefaultNullability_pp_nullability_defaultnullable(n: N) {}
 }

 open class ParameterizedNonNullable<N: Any> {
  @JvmField
  internal var nullable_pp_nullability_defaultnullable: N? = null

  @JvmField
  internal var nonNullable_pp_nullability_defaultnullable: N

  @JvmField
  internal var defaultNullability_pp_nullability_defaultnullable: N

  internal constructor(n: N) {
   this.nonNullable_pp_nullability_defaultnullable = n
   this.defaultNullability_pp_nullability_defaultnullable = n
  }

  internal open fun getNullable_pp_nullability_defaultnullable(): N? {
   return null
  }

  internal open fun getNonNullable_pp_nullability_defaultnullable(): N {
   throw RuntimeException()
  }

  internal open fun getDefaultNullability_pp_nullability_defaultnullable(): N {
   return null!!
  }

  internal open fun setNullable_pp_nullability_defaultnullable(n: N?) {}

  internal open fun setNonNull_pp_nullability_defaultnullable(n: N) {}

  internal open fun setDefaultNullability_pp_nullability_defaultnullable(n: N) {}
 }

 fun interface Consumer<T> {
  fun accept(t: T)
 }

 fun interface NullMarkedSupplier<T> {
  fun get(): T
 }

 fun interface NullMarkedConsumer<T> {
  fun accept(t: T)
 }

 fun interface NullMarkedIntFunction<T> {
  fun accept(i: Int): T
 }
}
