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

import javaemul.lang.*
import kotlin.Annotation
import kotlin.Array
import kotlin.Boolean
import kotlin.BooleanArray
import kotlin.Int
import kotlin.IntArray
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmStatic
import kotlin.reflect.KClass

open class Main {
 companion object {
  @JvmStatic
  internal fun test_pp_annotation(foo: Foo?) {
   val booleanConstant: Boolean = Foo.BOOLEAN_CONSTANT
   val intConstant: Int = Foo.INT_CONSTANT
   val stringConstant: String = Foo.STRING_CONSTANT
   val booleanValue: Boolean = foo!!.booleanValue
   val intValue: Int = foo!!.intValue
   val stringValue: String = foo!!.stringValue
   val enumValue: SomeEnum = foo!!.enumValue
   val annotationValue: Zoo = foo!!.annotationValue
   val booleanArray: BooleanArray = foo!!.booleanArray
   val intArray: IntArray = foo!!.intArray
   val stringArray: Array<String?> = foo!!.stringArray as Array<String?>
   val enumArray: Array<SomeEnum?> = foo!!.enumArray as Array<SomeEnum?>
   val annotationArray: Array<Zoo?> = foo!!.annotationArray as Array<Zoo?>
  }

  @JvmStatic
  internal fun testClassValues_pp_annotation(foo: Foo?) {}

  @JvmStatic
  internal fun test_pp_annotation(classImplementingAnnotation: Main.ClassImplementingAnnotation?): Annotation? {
   return classImplementingAnnotation
  }

  @JvmStatic
  internal fun test_pp_annotation(interfaceExtendingAnnotation: InterfaceExtendingAnnotation?): Annotation? {
   return interfaceExtendingAnnotation
  }
 }

 annotation class Foo (
  val booleanValue: Boolean,
  val intValue: Int,
  val stringValue: String,
  val classValue: KClass<*>,
  val stringClassValue: KClass<String>,
  val wildcardClassValue: KClass<out KClass<*>>,
  val enumValue: SomeEnum,
  val annotationValue: Zoo,
  val booleanArray: BooleanArray,
  val intArray: IntArray,
  val stringArray: Array<String>,
  val classArray: Array<KClass<*>>,
  val enumArray: Array<SomeEnum>,
  val annotationArray: Array<Zoo>) {
  companion object {
   const val BOOLEAN_CONSTANT: Boolean = false

   const val INT_CONSTANT: Int = 123

   const val STRING_CONSTANT: String = "foo"
  }
 }

 enum class SomeEnum {
  ZERO,
  ONE;
 }

 annotation class Zoo

 abstract inner class ClassImplementingAnnotation internal constructor(): Annotation

 interface InterfaceExtendingAnnotation: Annotation
}
