package

internal fun test(/*0*/ with: WithClassObject, /*1*/ without: WithoutClassObject, /*2*/ obj: Obj): kotlin.Unit

internal trait N {
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    internal open fun foo(): kotlin.Int
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

internal object Obj {
    private constructor Obj()
    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

    internal final class Nested {
        public constructor Nested()
        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
    }

    internal final enum class NestedEnum : kotlin.Enum<Obj.NestedEnum> {
        public enum entry A : Obj.NestedEnum {
            private constructor A()
            public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: Obj.NestedEnum): kotlin.Int
            public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
            public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
        }

        private constructor NestedEnum()
        public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: Obj.NestedEnum): kotlin.Int
        public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
        public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String

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

    internal object NestedObj : N {
        private constructor NestedObj()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        internal open override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        internal final fun invoke(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    internal final class NestedWithClassObject {
        public constructor NestedWithClassObject()
        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

        internal default object Default : N {
            private constructor Default()
            public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            internal open override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
        }
    }
}

internal final class WithClassObject {
    public constructor WithClassObject()
    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

    internal default object Default {
        private constructor Default()
        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
    }

    internal final class Nested {
        public constructor Nested()
        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
    }

    internal final enum class NestedEnum : kotlin.Enum<WithClassObject.NestedEnum> {
        public enum entry A : WithClassObject.NestedEnum {
            private constructor A()
            public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: WithClassObject.NestedEnum): kotlin.Int
            public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
            public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
        }

        private constructor NestedEnum()
        public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: WithClassObject.NestedEnum): kotlin.Int
        public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
        public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String

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

    internal object NestedObj : N {
        private constructor NestedObj()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        internal open override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        internal final fun invoke(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    internal final class NestedWithClassObject {
        public constructor NestedWithClassObject()
        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

        internal default object Default : N {
            private constructor Default()
            public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            internal open override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
        }
    }
}

internal final class WithoutClassObject {
    public constructor WithoutClassObject()
    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

    internal final class Nested {
        public constructor Nested()
        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
    }

    internal final enum class NestedEnum : kotlin.Enum<WithoutClassObject.NestedEnum> {
        public enum entry A : WithoutClassObject.NestedEnum {
            private constructor A()
            public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: WithoutClassObject.NestedEnum): kotlin.Int
            public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
            public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
        }

        private constructor NestedEnum()
        public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: WithoutClassObject.NestedEnum): kotlin.Int
        public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
        public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String

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

    internal object NestedObj : N {
        private constructor NestedObj()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        internal open override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        internal final fun invoke(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    internal final class NestedWithClassObject {
        public constructor NestedWithClassObject()
        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

        internal default object Default : N {
            private constructor Default()
            public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            internal open override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
        }
    }
}
