package

package a {

    public interface X {
        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 C {
            public constructor C()
            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/*package*/ interface I {
                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 Z {
                    public constructor Z()
                    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 const final val CONST: kotlin.Double = 41.3.toDouble()
                }

                // Static members
                public const final val Pi: kotlin.Double = 41.3.toDouble()
            }

            // Static members
            public const final val Pi: kotlin.Double = 3.14.toDouble()
        }

        public interface Y : a.X {
            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 XY : a.X, a.X.Y {
                public constructor XY()
                public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
                public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
                public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String

                public open inner class XYZ : a.X.Y.XY, a.X.Y {
                    public constructor XYZ()
                    public/*package*/ final var O: kotlin.Int
                    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
                    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
                    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String

                    // Static members
                    public const final override /*1*/ /*fake_override*/ val I: kotlin.Int = 84
                    public const final override /*1*/ /*fake_override*/ val I: kotlin.Int = 42
                    public const final override /*2*/ /*fake_override*/ val O: kotlin.Int = 42
                }

                // Static members
                public const final val I: kotlin.Int = 84
                public const final override /*1*/ /*fake_override*/ val O: kotlin.Int = 42
            }

            // Static members
            public const final override /*1*/ /*fake_override*/ val I: kotlin.Int = 42
            public const final val O: kotlin.Int = 42
        }

        // Static members
        public const final val I: kotlin.Int = 42
    }
}
