open class X { override fun equals(other: Any?) = super.equals(other) override fun hashCode() = super.hashCode() } class A : X() { fun foo() { } override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false if (!super.equals(other)) return false return true } override fun hashCode(): Int { return super.hashCode() } }