// Generated from "externs/Main.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 externs

import javaemul.lang.*
import externs.Main.TopLevelExtern.Inner
import externs.Main.TopLevelExtern.InnerExtern
import jsinterop.annotations.JsMethod
import jsinterop.annotations.JsPackage
import jsinterop.annotations.JsProperty
import jsinterop.annotations.JsType
import kotlin.Any
import kotlin.Array
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmField
import kotlin.jvm.JvmStatic

open class Main {
 @JvmField
 var aFoo: FooOverlay? = null

 @JvmField
 internal var innerExtern_pp_externs: InnerExtern? = null

 @JvmField
 internal var inner_pp_externs: Inner? = null

 companion object {
  @JvmStatic
  private fun testFooOverlay(fooOverlay: FooOverlay?): Boolean {
   return fooOverlay!!.getFoo()!!.equals("Hello")
  }

  @JvmStatic
  @JsMethod
  private external fun useDirectlyAsFoo(fooOverlay: Any?)

  @JvmStatic
  fun main(vararg args: String?) {
   val args_1: Array<String?>? = args as Array<String?>?
   Main.testFooOverlay(
    FooImpl() as Any as FooOverlay,
   )
   Main.useDirectlyAsFoo(
    FooImpl(),
   )
  }
 }

 open class FooImpl internal constructor() {
  @JvmField
  @JsProperty(name = "foo")
  internal var foo_pp_externs: String? = null
 }

 @JsType(name = "Foo", namespace = JsPackage.GLOBAL, isNative = true)
 fun interface FooOverlay {
  @JsProperty
  fun getFoo(): String?
 }

 @JsType(namespace = JsPackage.GLOBAL, isNative = true)
 open class TopLevelExtern {
  @JsType(isNative = true)
  open class InnerExtern

  @JsType(name = "FooImpl", namespace = "externs.Main", isNative = true)
  open class Inner
 }
}
