package test.another;

/**
 * public final annotation class test/another/Anno : kotlin/Annotation {
 *
 *   // signature: <init>(Ljava/lang/String;)V
 *   public constructor(value: kotlin/String)
 *
 *   // getter: value()Ljava/lang/String;
 *   public final val value: kotlin/String
 *     public final get
 *
 *   // module name: main
 * }
 */
@kotlin.Metadata()
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
public abstract @interface Anno {

    public abstract java.lang.String value();
}


////////////////////

package test.another;

/**
 * package {
 *
 *   // signature: extensionFunction(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 *   public final fun kotlin/String.extensionFunction(a: kotlin/String, b: kotlin/String): kotlin/Unit
 *
 *   // signature: topLevelFunction()Ljava/lang/String;
 *   public final fun topLevelFunction(): kotlin/String?
 *
 *   // signature: topLevelGenericFunction()Ljava/util/List;
 *   public final fun <T#0 (* X *) : kotlin/CharSequence, T#1 (* T *) : kotlin/collections/List<out T#0>> topLevelGenericFunction(): T#1?
 *
 *   // getter: getExtensionProperty(Ljava/lang/Object;)Ljava/lang/String;
 *   // setter: setExtensionProperty(Ljava/lang/Object;Ljava/lang/String;)V
 *   // synthetic method for annotations: getExtensionProperty$annotations(Ljava/lang/Object;)V
 *   public final var <T#0 (* T *) : kotlin/Any> T#0.extensionProperty: kotlin/String
 *     public final (* non-default *) get
 *     public final (* non-default *) set(setParamName: kotlin/String)
 *
 *   // field: topLevelProperty:I
 *   // getter: getTopLevelProperty()I
 *   public final val topLevelProperty: kotlin/Int (* = ... *)
 *     public final get
 *
 *   // getter: getTopLevelProperty2()Ljava/lang/String;
 *   public final val topLevelProperty2: kotlin/String
 *     public final (* non-default *) get
 *
 *   // field: topLevelConstProperty:I
 *   public final const val topLevelConstProperty: kotlin/Int (* = ... *)
 *     public final get
 *
 *   // module name: main
 * }
 */
@kotlin.Metadata()
public final class TopLevelKt {
    public static final int topLevelConstProperty = 2;

    private static final int topLevelProperty = 2;

    public static final void extensionFunction(@Anno(value = "rec") @org.jetbrains.annotations.NotNull() java.lang.String $this$extensionFunction, @Anno(value = "1") @org.jetbrains.annotations.NotNull() java.lang.String a, @Anno(value = "2") @org.jetbrains.annotations.NotNull() java.lang.String b) {
    }

    @org.jetbrains.annotations.NotNull()
    public static final <T extends java.lang.Object>java.lang.String getExtensionProperty(@Anno(value = "propRec") @org.jetbrains.annotations.NotNull() T $this$extensionProperty) {
        return null;
    }

    @Anno(value = "extpr")
    @java.lang.Deprecated()
    public static void getExtensionProperty$annotations(java.lang.Object p0) {
    }

    public static final int getTopLevelProperty() {
        return 0;
    }

    @org.jetbrains.annotations.NotNull()
    public static final java.lang.String getTopLevelProperty2() {
        return null;
    }

    public static final <T extends java.lang.Object>void setExtensionProperty(@Anno(value = "propRec") @org.jetbrains.annotations.NotNull() T $this$extensionProperty, @Anno(value = "setparam") @org.jetbrains.annotations.NotNull() java.lang.String setParamName) {
    }

    @org.jetbrains.annotations.Nullable()
    public static final java.lang.String topLevelFunction() {
        return null;
    }

    @org.jetbrains.annotations.Nullable()
    public static final <X extends java.lang.CharSequence, T extends java.util.List<? extends X>>T topLevelGenericFunction() {
        return null;
    }
}
