// MODULE: lib
// FILE: lib.kt

@Target(allowedTargets = [AnnotationTarget.TYPE, AnnotationTarget.VALUE_PARAMETER])
@Retention(value = AnnotationRetention.BINARY)
open annotation class Binary : Annotation {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

@Target(allowedTargets = [AnnotationTarget.TYPE, AnnotationTarget.VALUE_PARAMETER])
@Retention(value = AnnotationRetention.RUNTIME)
open annotation class Runtime : Annotation {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

@Target(allowedTargets = [AnnotationTarget.TYPE, AnnotationTarget.VALUE_PARAMETER])
@Retention(value = AnnotationRetention.SOURCE)
open annotation class Source : Annotation {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

fun binary(@Binary x: @Binary Short): @Binary Short {
  return x
}

fun runtime(@Runtime x: @Runtime Short): @Runtime Short {
  return x
}

fun source(@Source x: @Source Short): @Source Short {
  return x
}

// MODULE: main
// FILE: main.kt

fun box(): String {
  source(x = 0S) /*~> Unit */
  binary(x = 1S) /*~> Unit */
  runtime(x = 2S) /*~> Unit */
  return "OK"
}
