package

public/*package*/ open class Outer {
    public/*package*/ 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/*package*/ open inner class A {
        public/*package*/ constructor A()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        org.jetbrains.annotations.Nullable() public/*package*/ open fun foo(): Base<kotlin.String>?
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public/*package*/ open inner class B : Outer.A {
        public/*package*/ constructor B()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        java.lang.Override() public/*package*/ open override /*1*/ fun foo(): Base<kotlin.String>?
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public/*package*/ open inner class C : Outer.A {
        public/*package*/ constructor C()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        java.lang.Override() org.jetbrains.annotations.NotNull() public/*package*/ open override /*1*/ fun foo(): Base<kotlin.String>
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public/*package*/ open inner class D : Outer.A {
        public/*package*/ constructor D()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        java.lang.Override() public/*package*/ open override /*1*/ fun foo(): Derived<kotlin.String!>?
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public/*package*/ open inner class E : Outer.A {
        public/*package*/ constructor E()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        java.lang.Override() org.jetbrains.annotations.NotNull() public/*package*/ open override /*1*/ fun foo(): Derived<kotlin.String!>
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public/*package*/ open inner class F : Outer.A {
        public/*package*/ constructor F()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        java.lang.Override() org.jetbrains.annotations.NotNull() public/*package*/ open override /*1*/ fun foo(): Derived<kotlin.String!>
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }
}
