package

public fun main(/*0*/ j: p.J<kotlin.String>): kotlin.Unit

package p {

    public open class J</*0*/ T : kotlin.Any!> {
        public constructor J</*0*/ T : kotlin.Any!>()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open fun foo(/*0*/ r: p.Ref<kotlin.Array<(out) T!>!>!): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public open class Ref</*0*/ T : kotlin.Any!> {
        public constructor Ref</*0*/ T : kotlin.Any!>()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String

        // Static members
        public open fun </*0*/ T : kotlin.Any!> create(): p.Ref<T!>!
    }
}
