// Generated from "typeannotations/TypeAnnotations.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 typeannotations

import javaemul.lang.*
import java.util.ArrayList
import kotlin.String
import kotlin.Suppress
import kotlin.collections.MutableList
import kotlin.jvm.JvmStatic
import typeannotations.ParametricType

abstract class AbstractType internal constructor(): ParametricType<AbstractType?>

abstract class AbstractTypeNonNull internal constructor(): ParametricType<AbstractType>

open class Parent internal constructor() {
 open fun m(s: String, c: Parent?): Parent? {
  return c
 }

 open fun m(l: MutableList<String>?, c: Parent?): MutableList<Parent>? {
  return ArrayList<Parent>()
 }
}

open class ChildWithNullableParent internal constructor(): Parent(), ParametricType<Parent?>

open class ChildWithNonNullableParent internal constructor(): Parent(), ParametricType<Parent>

open class TypeAnnotations {
 companion object {
  @JvmStatic
  fun main() {
   val list: MutableList<String> = ArrayList<String>()
  }
 }
}
