package

public interface AbstractEqualsHashCodeToString {
    public abstract override /*1*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public abstract override /*1*/ fun hashCode(): kotlin.Int
    public abstract override /*1*/ fun toString(): kotlin.String
}

public interface Allowed {
    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 abstract data class Base {
    public constructor Base(/*0*/ x: kotlin.Int)
    public final val x: kotlin.Int
    public final operator /*synthesized*/ fun component1(): kotlin.Int
    public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ...): Base
    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 data class Complex : Allowed, NotAllowed {
    public constructor Complex(/*0*/ y: kotlin.Int)
    public final val y: kotlin.Int
    public final operator /*synthesized*/ fun component1(): kotlin.Int
    public final /*synthesized*/ fun copy(/*0*/ y: kotlin.Int = ...): Complex
    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 final class Derived : Base {
    public constructor Derived()
    public final override /*1*/ /*fake_override*/ val x: kotlin.Int
    public final override /*1*/ /*fake_override*/ fun component1(): kotlin.Int
    public final override /*1*/ /*fake_override*/ fun copy(/*0*/ x: kotlin.Int = ...): Base
    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 data class ImplInterface : AbstractEqualsHashCodeToString {
    public constructor ImplInterface(/*0*/ s: kotlin.String)
    public final val s: kotlin.String
    public final operator /*synthesized*/ fun component1(): kotlin.String
    public final /*synthesized*/ fun copy(/*0*/ s: kotlin.String = ...): ImplInterface
    public abstract override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public abstract override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public abstract override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public final data class Nasty : Base {
    public constructor Nasty(/*0*/ z: kotlin.Int, /*1*/ y: kotlin.Int)
    public final override /*1*/ /*fake_override*/ val x: kotlin.Int
    public final val y: kotlin.Int
    public final val z: kotlin.Int
    public final override /*1*/ /*synthesized*/ fun component1(): kotlin.Int
    public final operator /*synthesized*/ fun component2(): kotlin.Int
    public final override /*1*/ /*fake_override*/ fun copy(/*0*/ x: kotlin.Int = ...): Base
    public final /*synthesized*/ fun copy(/*0*/ z: kotlin.Int = ..., /*1*/ y: kotlin.Int = ...): Nasty
    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 NotAllowed {
    public constructor NotAllowed()
    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
}
