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

import javaemul.lang.*
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmStatic
import kotlin.run

open class Main {
 internal open fun testInterfaceMembers_pp_interfaces() {
  val i: Interface<String?> = Implementor()
  i.interfaceMethod()
  i.defaultMethod(null)
  i.toString()
  val impl: Main.Implementor = Implementor()
  impl.defaultMethod(null)
  val enumImpl: EnumImplementor = EnumImplementor.ONE
  enumImpl.defaultMethod(null)
  Interface.staticInterfaceMethod()
  val x: Int = run {
   Implementor()
   Interface.a
  } + Interface.b
  val si: SubInterface = Implementor()
  si.interfaceMethod()
  si.defaultMethod(null)
 }

 fun interface Interface<T> {
  fun interfaceMethod()

  fun defaultMethod(t: T) {
   this.privateMethod_private_interfaces_Main_Interface(t)
  }

  fun privateMethod_private_interfaces_Main_Interface(t: T) {}

  companion object {
   const val a: Int = 1

   const val b: Int = 2

   @JvmStatic
   fun staticInterfaceMethod() {}
  }
 }

 fun interface SubInterface: Interface<String?> {
  override fun defaultMethod(s: String?) {
   super<Interface>.defaultMethod(s)
  }
 }

 open inner class Implementor internal constructor(): SubInterface, Interface<String?> {
  override fun interfaceMethod() {}
 }

 abstract inner class AbstractImplementor internal constructor(): SubInterface

 enum class EnumImplementor: SubInterface {
  ONE;

  override fun interfaceMethod() {}
 }
}
