// Generated from "jsfunction/JsFunctionOptimization.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 jsfunction

import javaemul.lang.*
import jsinterop.annotations.JsFunction
import kotlin.Any
import kotlin.Array
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.arrayOf

open class JsFunctionOptimization {
 open fun main(r: Int) {
  object : Any() {
   internal fun m_pp_jsfunction() {
    val x: String = ""
    object : Any() {
     internal fun m_pp_jsfunction() {
      val `var`: Int = 1
      val f: F = object : F {
       override fun m(s: String?): String? {
        val r1: Int = r
        val var1: Int = `var`
        val x1: String = x
        return java.lang.String.valueOf(r) + s + x + `var` + object : F {
         override fun m(s: String?): String? {
          return "" + s + r1 + x1 + var1
         }
        }.m("hello")
       }
      }
      val f2: F = object : F {
       override fun m(s: String?): String? {
        val r1: Int = r
        val var1: Int = `var`
        val x1: String = x
        return java.lang.String.valueOf(r) + s + x + `var` + object : Any() {
         fun sayHey(): String? {
          return "Hey"
         }
        }.sayHey()
       }
      }
     }
    }
   }
  }
  val f = object : F {
   override fun m(s: String?): String? {
    return ""
   }
  }
  val array: Array<Any?> = arrayOf<Any?>(object : F {
   override fun m(s: String?): String? {
    return ""
   }
  })
  Holder(
   object : F {
    override fun m(s: String?): String? {
     return ""
    }
   },
  )
  Holder(
   1,
   object : F {
    override fun m(s: String?): String? {
     return ""
    }
   },
  )
 }

 @JsFunction
 fun interface F {
  fun m(s: String?): String?
 }

 open inner class Holder<T> {
  internal constructor(value: T)

  internal constructor(i: Int, vararg value: T) {
   val value_1: Array<T>? = value as Array<T>?
  }
 }
}
