annotation class AllOpen

@AllOpen
annotation class MyComponent

@MyComponent // Double-transitive annotations is supported
annotation class OtherComponent

@OtherComponent
annotation class AnotherComponent

@java.lang.annotation.Documented
annotation class Documented

class TestWithoutAnnotations_ShouldBeFinal

@Documented
class ClassWithDocumented

@AllOpen
class TestAllOpen_ShouldBeOpen

@MyComponent
class TestMyComponent_ShouldBeOpen

@OtherComponent
class TestOtherComponent_ShouldBeOpen

@AnotherComponent
class TestAnotherComponent_ShouldBeOpen

@MyComponent
abstract class MyComponentBase

class MyComponentImpl_ShouldBeOpen : MyComponentBase() {
    fun method() {}
}

final class MyComponentImpl2_ShouldBeFinal : MyComponentBase() {
    fun method() {}
}

class MyComponentImpl3_ShouldBeOpen : MyComponentBase() {
    final fun method_ShouldBeFinal() {}
}
