// Generated from "transitivejsoverlayimport/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 transitivejsoverlayimport

import javaemul.lang.*
import jsinterop.annotations.JsConstructor
import jsinterop.annotations.JsOverlay
import jsinterop.annotations.JsPackage
import jsinterop.annotations.JsProperty
import jsinterop.annotations.JsType
import kotlin.Any
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmStatic

@JsType(name = "Object", namespace = JsPackage.GLOBAL, isNative = true)
open class Immediate internal constructor(): Transitive() {
 @JsOverlay
 internal fun doImmediateInstanceMethod_pp_transitivejsoverlayimport() {}
}

open class NonNativeUpper: Immediate {
 @JsConstructor
 constructor()

 internal open fun doNonNativeUpperInstanceMethod_pp_transitivejsoverlayimport() {}
}

open class NonNativeLower: NonNativeUpper {
 @JsConstructor
 constructor()

 internal open fun doNonNativeLowerInstanceMethod_pp_transitivejsoverlayimport() {}
}

@JsType(name = "Object", namespace = JsPackage.GLOBAL, isNative = true)
open class Transitive internal constructor() {
 @JsProperty(name = "constructor")
 internal external fun getJsProperty_pp_transitivejsoverlayimport(): Any?

 @JsOverlay
 internal fun doTransitiveInstanceMethod_pp_transitivejsoverlayimport(arg1: String?) {}
}

open class Main {
 companion object {
  @JvmStatic
  fun main() {
   val transitive: Transitive = Transitive()
   transitive.doTransitiveInstanceMethod_pp_transitivejsoverlayimport("arg1")
   transitive.getJsProperty_pp_transitivejsoverlayimport()
   val immediate: Immediate = Immediate()
   immediate.doTransitiveInstanceMethod_pp_transitivejsoverlayimport("arg1")
   immediate.getJsProperty_pp_transitivejsoverlayimport()
   immediate.doImmediateInstanceMethod_pp_transitivejsoverlayimport()
   val nonNativeUpper: NonNativeUpper = NonNativeUpper()
   nonNativeUpper.doTransitiveInstanceMethod_pp_transitivejsoverlayimport("arg1")
   nonNativeUpper.getJsProperty_pp_transitivejsoverlayimport()
   nonNativeUpper.doImmediateInstanceMethod_pp_transitivejsoverlayimport()
   nonNativeUpper.doNonNativeUpperInstanceMethod_pp_transitivejsoverlayimport()
   val nonNativeLower: NonNativeLower = NonNativeLower()
   nonNativeLower.doTransitiveInstanceMethod_pp_transitivejsoverlayimport("arg1")
   nonNativeLower.getJsProperty_pp_transitivejsoverlayimport()
   nonNativeLower.doImmediateInstanceMethod_pp_transitivejsoverlayimport()
   nonNativeLower.doNonNativeUpperInstanceMethod_pp_transitivejsoverlayimport()
   nonNativeLower.doNonNativeLowerInstanceMethod_pp_transitivejsoverlayimport()
  }
 }
}
