public abstract interface foo/Ann : java/lang/Object, java/lang/annotation/Annotation {

}

public abstract interface foo/Ann2 : java/lang/Object, java/lang/annotation/Annotation {

}

public abstract interface foo/Ann3 : java/lang/Object, java/lang/annotation/Annotation {

}

public abstract interface foo/Ann4 : java/lang/Object, java/lang/annotation/Annotation {

}

<T:Ljava/lang/Object;>Ljava/lang/Object;
public final class foo/Bar : java/lang/Object {
    public void <init>()
}

public final class foo/Kotlin : java/lang/Object {
    public void <init>()

    (Lfoo/Bar<Ljava/lang/String;>;)V
    public final void foo(foo.Bar s)
      @Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
      @Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, 0;
        @Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0

    ()Lfoo/Bar<Ljava/lang/String;>;
    public final foo.Bar foo()
      @Lorg/jetbrains/annotations/Nullable;([]) // invisible
      @Lfoo/Ann;([]) : METHOD_RETURN, null
      @Lfoo/Ann2;([]) : METHOD_RETURN, 0;

    <T:Ljava/lang/Object;>(TT;)V
    public final void foo(java.lang.Object s)
      @Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null

    ([Lfoo/Bar<Ljava/lang/String;>;)V
    public final void fooArray(foo.Bar[] s)
      @Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
      @Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, [
      @Lfoo/Ann3;([]) : METHOD_FORMAL_PARAMETER 0, [0;
        @Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0

    ()[Lfoo/Bar<Ljava/lang/String;>;
    public final foo.Bar[] fooArray()
      @Lorg/jetbrains/annotations/Nullable;([]) // invisible
      @Lfoo/Ann;([]) : METHOD_RETURN, null
      @Lfoo/Ann2;([]) : METHOD_RETURN, [
      @Lfoo/Ann3;([]) : METHOD_RETURN, [0;

    ([[Lfoo/Bar<Ljava/lang/String;>;)V
    public final void fooArrayArray(foo.Bar[][] s)
      @Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
      @Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, [
      @Lfoo/Ann3;([]) : METHOD_FORMAL_PARAMETER 0, [[
      @Lfoo/Ann4;([]) : METHOD_FORMAL_PARAMETER 0, [[0;
        @Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0

    ()[[Lfoo/Bar<Ljava/lang/String;>;
    public final foo.Bar[][] fooArrayArray()
      @Lorg/jetbrains/annotations/Nullable;([]) // invisible
      @Lfoo/Ann;([]) : METHOD_RETURN, null
      @Lfoo/Ann2;([]) : METHOD_RETURN, [
      @Lfoo/Ann3;([]) : METHOD_RETURN, [[
      @Lfoo/Ann4;([]) : METHOD_RETURN, [[0;

    <T:Ljava/lang/Object;>(Lfoo/Bar<TT;>;)V
    public final void fooGeneric(foo.Bar s)
      @Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
      @Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, 0;
        @Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
