package

public fun local(): kotlin.Unit
public fun test(): kotlin.String

public abstract class AbstractSpecialized : Foo<kotlin.String> {
    public constructor AbstractSpecialized()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

@kotlin.jvm.JvmDefaultWithoutCompatibility public abstract class AbstractSpecializedNC : Foo<kotlin.String> {
    public constructor AbstractSpecializedNC()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public abstract class AbstractUnspecializedFromDerived : FooDerived {
    public constructor AbstractUnspecializedFromDerived()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

@kotlin.jvm.JvmDefaultWithoutCompatibility public abstract class AbstractUnspecializedFromDerivedNC : FooDerived {
    public constructor AbstractUnspecializedFromDerivedNC()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public final enum class EnumSpecialized : kotlin.Enum<EnumSpecialized>, Foo<kotlin.String> {
    enum entry ENTRY

    private constructor EnumSpecialized()
    public final override /*1*/ /*fake_override*/ val name: kotlin.String
    public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: kotlin.String
    protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
    public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: EnumSpecialized): kotlin.Int
    public final override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
    public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<EnumSpecialized!>!
    public final override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*1*/ /*fake_override*/ fun test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String

    // Static members
    public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): EnumSpecialized
    public final /*synthesized*/ fun values(): kotlin.Array<EnumSpecialized>
}

public fun interface F : Foo<kotlin.String> {
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 abstract fun invoke(/*0*/ o: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public final class FinalSpecialized : Foo<kotlin.String> {
    public constructor FinalSpecialized()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public interface Foo</*0*/ T> {
    public open val T.prop: 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 fun test(/*0*/ p: T): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public interface FooDerived : Foo<kotlin.String> {
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public object ObjectSpecialized : Foo<kotlin.String> {
    private constructor ObjectSpecialized()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

private final class Outer {
    public constructor Outer()
    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

    public open class InnerSpecialized : Foo<kotlin.String> {
        public constructor InnerSpecialized()
        public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }
}

public sealed class SealedSpecialized : Foo<kotlin.String> {
    protected constructor SealedSpecialized()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String

    public open class A : SealedSpecialized {
        public constructor A()
        public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }
}

public open class Specialized : Foo<kotlin.String> {
    public constructor Specialized()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

@kotlin.jvm.JvmDefaultWithoutCompatibility public open class SpecializedNC : Foo<kotlin.String> {
    public constructor SpecializedNC()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public final class Unspecialized</*0*/ Y> : Foo<Y> {
    public constructor Unspecialized</*0*/ Y>()
    public open override /*1*/ /*fake_override*/ val Y.prop: 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 test(/*0*/ p: Y): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public open class UnspecializedFromDerived : FooDerived {
    public constructor UnspecializedFromDerived()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

@kotlin.jvm.JvmDefaultWithoutCompatibility public open class UnspecializedFromDerivedNC : FooDerived {
    public constructor UnspecializedFromDerivedNC()
    public open override /*1*/ /*fake_override*/ val kotlin.String.prop: 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 test(/*0*/ p: kotlin.String): kotlin.String
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

