// TARGET_BACKEND: JVM

// WITH_STDLIB
// FILE: Test.java

import java.lang.annotation.Annotation;

class Test {

    public static String test1() throws NoSuchMethodException {
        Annotation[] test1s = A.class.getMethod("test1").getAnnotations();
        for (Annotation test : test1s) {
            String name = test.toString();
            if (name.contains("testAnnotation")) {
                return "OK";
            }
        }
        return "fail";
    }

    public static String test2() throws NoSuchMethodException {
        Annotation[] test2s = B.class.getMethod("test1").getAnnotations();
        for (Annotation test : test2s) {
            String name = test.toString();
            if (name.contains("testAnnotation")) {
                return "OK";
            }
        }
        return "fail";
    }

}

// FILE: test.kt

@Retention(AnnotationRetention.RUNTIME)
annotation class testAnnotation

class A {

    companion object {
        val b: String = "OK"

        @JvmStatic @testAnnotation fun test1() = b
    }
}

object B {
    val b: String = "OK"

    @JvmStatic @testAnnotation fun test1() = b
}

fun box(): String {
    if (Test.test1() != "OK") return "fail 1"

    if (Test.test2() != "OK") return "fail 2"

    return "OK"
}
