Generating annotations in correct order for methods with synthetic parameters.

#KT-4050 fixed
This commit is contained in:
Evgeny Gerashchenko
2013-10-08 00:18:03 +04:00
parent e401be7ee6
commit 9c38716829
7 changed files with 311 additions and 233 deletions
@@ -121,7 +121,7 @@ public class FunctionCodegen extends GenerationStateAware {
AnnotationCodegen.forMethod(mv, typeMapper).genAnnotations(functionDescriptor);
if (state.getClassBuilderMode() == ClassBuilderMode.SIGNATURES) return;
generateParameterAnnotations(functionDescriptor, mv);
generateParameterAnnotations(functionDescriptor, mv, jvmSignature);
generateJetValueParameterAnnotations(mv, functionDescriptor, jvmSignature);
@@ -141,9 +141,25 @@ public class FunctionCodegen extends GenerationStateAware {
methodContext.recordSyntheticAccessorIfNeeded(functionDescriptor, typeMapper);
}
private void generateParameterAnnotations(@NotNull FunctionDescriptor functionDescriptor, @NotNull MethodVisitor mv) {
for (ValueParameterDescriptor parameter : functionDescriptor.getValueParameters()) {
AnnotationCodegen.forParameter(parameter.getIndex(), mv, typeMapper).genAnnotations(parameter);
private void generateParameterAnnotations(
@NotNull FunctionDescriptor functionDescriptor,
@NotNull MethodVisitor mv,
@NotNull JvmMethodSignature jvmSignature
) {
Iterator<ValueParameterDescriptor> iterator = functionDescriptor.getValueParameters().iterator();
List<JvmMethodParameterSignature> kotlinParameterTypes = jvmSignature.getKotlinParameterTypes();
for (int i = 0; i < kotlinParameterTypes.size(); i++) {
JvmMethodParameterKind kind = kotlinParameterTypes.get(i).getKind();
if (kind == JvmMethodParameterKind.ENUM_NAME || kind == JvmMethodParameterKind.ENUM_ORDINAL) {
markEnumConstructorParameterAsSynthetic(mv, i);
continue;
}
if (kind == JvmMethodParameterKind.VALUE) {
ValueParameterDescriptor parameter = iterator.next();
AnnotationCodegen.forParameter(i, mv, typeMapper).genAnnotations(parameter);
}
}
}
@@ -159,8 +175,7 @@ public class FunctionCodegen extends GenerationStateAware {
for (int i = 0; i < kotlinParameterTypes.size(); i++) {
JvmMethodParameterKind kind = kotlinParameterTypes.get(i).getKind();
if (kind == JvmMethodParameterKind.ENUM_NAME || kind == JvmMethodParameterKind.ENUM_ORDINAL) {
// We shouldn't generate annotations for invisible in runtime parameters otherwise we get bad
// RuntimeInvisibleParameterAnnotations error in javac
markEnumConstructorParameterAsSynthetic(mv, i);
continue;
}
@@ -199,6 +214,14 @@ public class FunctionCodegen extends GenerationStateAware {
}
}
private static void markEnumConstructorParameterAsSynthetic(MethodVisitor mv, int i) {
// This is needed to avoid RuntimeInvisibleParameterAnnotations error in javac:
// see MethodWriter.visitParameterAnnotation()
AnnotationVisitor av = mv.visitParameterAnnotation(i, "Ljava/lang/Synthetic;", true);
av.visitEnd();
}
@Nullable
private Type getThisTypeForFunction(@NotNull FunctionDescriptor functionDescriptor, @NotNull MethodContext context) {
ReceiverParameterDescriptor expectedThisObject = functionDescriptor.getExpectedThisObject();
@@ -0,0 +1,7 @@
package test;
public class kt4050 {
public static void main(String[] args) {
MyEnum.ENTRY.getOrd();
}
}
@@ -0,0 +1,9 @@
package test
enum class MyEnum(deprecated("") val ord: Int) {
ENTRY: MyEnum(239)
fun f(Deprecated p: Int) {
}
}
@@ -107,6 +107,16 @@ public class AnnotationGenTest extends CodegenTestCase {
assertNotNull(getDeprecatedAnnotationFromList(annotations));
}
public void testAnnotationForParamInInstanceExtensionFunction() throws NoSuchFieldException, NoSuchMethodException {
loadText("class A() { fun String.x([Deprecated] i: Int) {}}");
Class<?> aClass = generateClass("A");
Method x = aClass.getMethod("x", String.class, int.class);
assertNotNull(x);
// Get annotations for first real parameter
Annotation[] annotations = x.getParameterAnnotations()[1];
assertNotNull(getDeprecatedAnnotationFromList(annotations));
}
public void testParamInConstructor() throws NoSuchFieldException, NoSuchMethodException {
loadText("class A ([Deprecated] x: Int) {}");
Class<?> aClass = generateClass("A");
@@ -117,6 +127,27 @@ public class AnnotationGenTest extends CodegenTestCase {
assertNotNull(getDeprecatedAnnotationFromList(annotations));
}
public void testParamInEnumConstructor() throws NoSuchFieldException, NoSuchMethodException {
loadText("enum class E([Deprecated] p: String)");
Class<?> klass = generateClass("E");
Constructor constructor = klass.getDeclaredConstructor(String.class, int.class, String.class);
assertNotNull(constructor);
// Get annotations for first parameter
Annotation[] annotations = constructor.getParameterAnnotations()[0];
assertNotNull(getDeprecatedAnnotationFromList(annotations));
}
public void testParamInInnerConstructor() throws NoSuchFieldException, NoSuchMethodException {
loadText("class Outer { inner class Inner([Deprecated] x: Int) }");
Class<?> outer = generateClass("Outer");
Class<?> inner = outer.getDeclaredClasses()[0];
Constructor constructor = inner.getDeclaredConstructor(outer, int.class);
assertNotNull(constructor);
// Get annotations for first real parameter
Annotation[] annotations = constructor.getParameterAnnotations()[1];
assertNotNull(getDeprecatedAnnotationFromList(annotations));
}
public void testPropFieldInConstructor() throws NoSuchFieldException, NoSuchMethodException {
loadText("class A ([Deprecated] var x: Int) {}");
Class<?> aClass = generateClass("A");
@@ -950,7 +950,7 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
public void testCopyToArray() throws Exception {
doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/toArray/copyToArray.kt");
}
@TestMetadata("kt3177-copyToArray.kt")
public void testKt3177_copyToArray() throws Exception {
doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/toArray/kt3177-copyToArray.kt");
@@ -78,6 +78,11 @@ public class CompileJavaAgainstKotlinTestGenerated extends AbstractCompileJavaAg
doTest("compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt");
}
@TestMetadata("kt4050.kt")
public void testKt4050() throws Exception {
doTest("compiler/testData/compileJavaAgainstKotlin/class/kt4050.kt");
}
@TestMetadata("Simple.kt")
public void testSimple() throws Exception {
doTest("compiler/testData/compileJavaAgainstKotlin/class/Simple.kt");
+229 -226
View File
@@ -1,230 +1,233 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="java.lang.reflect.AccessibleObject T getAnnotation(java.lang.Class&lt;T&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun &lt;T : Annotation&gt; getAnnotation(annotationClass : Class&lt;T&gt;) : T?&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AccessibleObject T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AccessibleObject boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AccessibleObject java.lang.annotation.Annotation[] getAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AccessibleObject java.lang.annotation.Annotation[] getDeclaredAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaredAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AccessibleObject void setAccessible(java.lang.reflect.AccessibleObject[], boolean)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun setAccessible(array : Array&lt;out AccessibleObject&gt;, flag : Boolean) : Unit&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AccessibleObject void setAccessible(java.lang.reflect.AccessibleObject[], boolean) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AnnotatedElement T getAnnotation(java.lang.Class&lt;T&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun &lt;T : Annotation&gt; getAnnotation(annotationClass : Class&lt;T&gt;) : T?&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AnnotatedElement T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AnnotatedElement boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun isAnnotationPresent(annotationClass : Class&lt;out Annotation&gt;) : Boolean&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AnnotatedElement boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AnnotatedElement java.lang.annotation.Annotation[] getAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AnnotatedElement java.lang.annotation.Annotation[] getDeclaredAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaredAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Array boolean getBoolean(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array byte getByte(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array char getChar(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array double getDouble(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array float getFloat(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array int getInt(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array int getLength(java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array java.lang.Object get(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int)">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun newInstance(componentType : Class&lt;out Any&gt;, length : Int) : Any&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...)">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun newInstance(componentType : Class&lt;out Any&gt;, vararg dimensions : Int) : Any&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...) 1">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array long getLong(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array short getShort(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void set(java.lang.Object, int, java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setBoolean(java.lang.Object, int, boolean) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setByte(java.lang.Object, int, byte) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setChar(java.lang.Object, int, char) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setDouble(java.lang.Object, int, double) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setFloat(java.lang.Object, int, float) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setInt(java.lang.Object, int, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setLong(java.lang.Object, int, long) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setShort(java.lang.Object, int, short) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name='java.lang.reflect.Constructor T newInstance(java.lang.Object...)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name="java.lang.reflect.Constructor T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Constructor java.lang.Class&lt;T&gt; getDeclaringClass()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaringClass() : Class&lt;out T&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Constructor java.lang.String getName()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Constructor java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Constructor java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Constructor java.lang.annotation.Annotation[][] getParameterAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Field T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Field java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Field java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.GenericDeclaration java.lang.reflect.TypeVariable&lt;?&gt;[] getTypeParameters()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun getTypeParameters() : Array&lt;out TypeVariable&lt;out GenericDeclaration?&gt;?&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.InvocationHandler java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) 1">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Member java.lang.Class&lt;?&gt; getDeclaringClass()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaringClass() : Class&lt;out Any&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Method T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Method java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Method java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Method java.lang.annotation.Annotation[][] getParameterAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getParameterAnnotations() : Array&lt;Array&lt;Annotation&gt;&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Modifier java.lang.String toString(int)">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy boolean isProxyClass(java.lang.Class&lt;?&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.Class&lt;?&gt; getProxyClass(java.lang.ClassLoader, java.lang.Class&lt;?&gt;...)">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.Class&lt;?&gt; getProxyClass(java.lang.ClassLoader, java.lang.Class&lt;?&gt;...) 1">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class&lt;?&gt;[], java.lang.reflect.InvocationHandler) 1">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class&lt;?&gt;[], java.lang.reflect.InvocationHandler) 2">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AccessibleObject T getAnnotation(java.lang.Class&lt;T&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun &lt;T : Annotation&gt; getAnnotation(annotationClass : Class&lt;T&gt;) : T?&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AccessibleObject T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AccessibleObject boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AccessibleObject java.lang.annotation.Annotation[] getAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AccessibleObject java.lang.annotation.Annotation[] getDeclaredAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaredAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AccessibleObject void setAccessible(java.lang.reflect.AccessibleObject[], boolean)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun setAccessible(array : Array&lt;out AccessibleObject&gt;, flag : Boolean) : Unit&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AccessibleObject void setAccessible(java.lang.reflect.AccessibleObject[], boolean) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AnnotatedElement T getAnnotation(java.lang.Class&lt;T&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun &lt;T : Annotation&gt; getAnnotation(annotationClass : Class&lt;T&gt;) : T?&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AnnotatedElement T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AnnotatedElement boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun isAnnotationPresent(annotationClass : Class&lt;out Annotation&gt;) : Boolean&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AnnotatedElement boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.AnnotatedElement java.lang.annotation.Annotation[] getAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.AnnotatedElement java.lang.annotation.Annotation[] getDeclaredAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaredAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Array boolean getBoolean(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array byte getByte(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array char getChar(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array double getDouble(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array float getFloat(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array int getInt(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array int getLength(java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array java.lang.Object get(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int)">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun newInstance(componentType : Class&lt;out Any&gt;, length : Int) : Any&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...)">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun newInstance(componentType : Class&lt;out Any&gt;, vararg dimensions : Int) : Any&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...) 1">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array long getLong(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array short getShort(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void set(java.lang.Object, int, java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setBoolean(java.lang.Object, int, boolean) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setByte(java.lang.Object, int, byte) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setChar(java.lang.Object, int, char) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setDouble(java.lang.Object, int, double) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setFloat(java.lang.Object, int, float) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setInt(java.lang.Object, int, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setLong(java.lang.Object, int, long) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Array void setShort(java.lang.Object, int, short) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Constructor T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name='java.lang.reflect.Constructor T newInstance(java.lang.Object...)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name="java.lang.reflect.Constructor java.lang.Class&lt;T&gt; getDeclaringClass()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaringClass() : Class&lt;out T&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Constructor java.lang.String getName()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Constructor java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Constructor java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Constructor java.lang.annotation.Annotation[][] getParameterAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name='jet.runtime.typeinfo.KotlinSignature'>
<val name="value" val="&quot;fun getParameterAnnotations(): Array&lt;Array&lt;Annotation&gt;&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Field T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Field java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Field java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.GenericDeclaration java.lang.reflect.TypeVariable&lt;?&gt;[] getTypeParameters()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value"
val="&quot;fun getTypeParameters() : Array&lt;out TypeVariable&lt;out GenericDeclaration?&gt;?&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.InvocationHandler java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) 1">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Member java.lang.Class&lt;?&gt; getDeclaringClass()">
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaringClass() : Class&lt;out Any&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Method T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Method java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Method java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Method java.lang.annotation.Annotation[][] getParameterAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getParameterAnnotations() : Array&lt;Array&lt;Annotation&gt;&gt;&quot;"/>
</annotation>
</item>
<item name="java.lang.reflect.Modifier java.lang.String toString(int)">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy boolean isProxyClass(java.lang.Class&lt;?&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.Class&lt;?&gt; getProxyClass(java.lang.ClassLoader, java.lang.Class&lt;?&gt;...)">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.Class&lt;?&gt; getProxyClass(java.lang.ClassLoader, java.lang.Class&lt;?&gt;...) 1">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class&lt;?&gt;[], java.lang.reflect.InvocationHandler) 1">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class&lt;?&gt;[], java.lang.reflect.InvocationHandler) 2">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
<item name="java.lang.reflect.Proxy java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
</root>