package

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
}

@kotlin.data() public abstract 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
}

@kotlin.data() public final 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
}

@kotlin.data() public final 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
}
