package

public open class Base</*0*/ T> {
    public constructor Base</*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 final inner class InnerCell /*captured type parameters: /*0*/ T*/ : ICell<T> {
        public constructor InnerCell(/*0*/ x: T)
        public open override /*1*/ val x: 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 typealias CT /*captured type parameters: /*0*/ T*/ = Cell<T>
}

public final class Cell</*0*/ T> : ICell<T> {
    public constructor Cell</*0*/ T>(/*0*/ x: T)
    public open override /*1*/ val x: 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 final class Derived : Base<kotlin.Int> {
    public constructor Derived()
    public final val test1: Base<kotlin.Int>.CT /* = Cell<kotlin.Int> */
    public final val test2: Base<kotlin.Int>.CT /* = Cell<kotlin.Int> */
    public final val x1: Base<kotlin.Int>.InnerCell
    public final val x2: Base<kotlin.Int>.InnerCell
    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 ICell</*0*/ T> {
    public abstract val x: 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
}
