83383ab9e5
DefaultConstructorMarker is used as a marker to ensure that a constructor is unique for companion objects. Prior to this change, DefaultConstructorMarker was package private. Being package private worked when calling the DefaultConstructorMarker-marked constsructor using `invokespecial`, likely because the JVM may not perform strict access checks in this situation. However, when access checks are performed, trying to call a DefaultConstructorMarker-marked constructor will fail. This could happen if the constructor was called using reflection or the MethodHandle API. These APIs may be used by tools that perform bytecode instrumentation on Kotlin JVM bytecode, such as Robolectric. It also caused problems when using ByteBuddy validation. Fixes https://youtrack.jetbrains.com/issue/KT-20869