package

package foo {

    @kotlin.js.JsExport public final class ExportedClass : foo.NonExportedClass {
        public constructor ExportedClass()
        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
    }

    @kotlin.js.JsExport public final class ExportedClass2 : foo.NonExportedInterface {
        public constructor ExportedClass2()
        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
    }

    @kotlin.js.JsExport public final class ExportedClass3 : foo.ExportedGenericClass<foo.NonExportedClass> {
        public constructor ExportedClass3()
        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
    }

    @kotlin.js.JsExport public final class ExportedClass4 : foo.ExportedGenericInterface<foo.NonExportedClass> {
        public constructor ExportedClass4()
        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
    }

    @kotlin.js.JsExport public final enum class ExportedEnum : kotlin.Enum<foo.ExportedEnum>, foo.ExportedGenericInterface<kotlin.Any>, foo.NonExportedInterface {
        enum entry EXPORTED_ENUM_1

        enum entry EXPORTED_ENUM_2

        private constructor ExportedEnum()
        public final override /*1*/ /*fake_override*/ val name: kotlin.String
        public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
        protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
        public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: foo.ExportedEnum): kotlin.Int
        public final override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public final override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String

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

    @kotlin.js.JsExport public open class ExportedGenericClass</*0*/ T> {
        public constructor ExportedGenericClass</*0*/ T>()
        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
    }

    @kotlin.js.JsExport public interface ExportedGenericInterface</*0*/ T> {
        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 NonExportedClass {
        public constructor NonExportedClass()
        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 interface NonExportedInterface {
        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
    }
}
