package

public /*synthesized*/ fun </*0*/ K : kotlin.Any!> A(/*0*/ function: (key: K!, f: MyFunc!) -> K!): A<K>
public /*synthesized*/ fun MyFunc(/*0*/ function: (x: kotlin.String!) -> kotlin.String!): MyFunc
public fun main(): kotlin.Unit

public interface A</*0*/ K : kotlin.Any!> {
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public abstract fun foo(/*0*/ key: K!, /*1*/ f: MyFunc!): K!
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public open class B</*0*/ E : kotlin.Any!> : A<E!> {
    public constructor B</*0*/ E : kotlin.Any!>()
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    @java.lang.Override public open override /*1*/ fun foo(/*0*/ key: E!, /*1*/ f: MyFunc!): E!
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public interface MyFunc {
    public abstract fun apply(/*0*/ x: kotlin.String!): kotlin.String!
    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
}
