// TARGET_BACKEND: JVM // FILE: JI.java public interface JI { @Override public abstract boolean equals(Object o); @Override public abstract int hashCode(); @Override public abstract String toString(); } // FILE: JC.java public abstract class JC { @Override public abstract boolean equals(Object o); @Override public abstract int hashCode(); @Override public abstract String toString(); } // FILE: JC2.java public abstract class JC2 extends JC { } // FILE: box.kt interface KI : JI class X : KI { override fun equals(other: Any?): Boolean = true override fun hashCode(): Int = 0 override fun toString(): String = "" } abstract class KC : JC() class Y : KC() { override fun equals(other: Any?): Boolean = true override fun hashCode(): Int = 0 override fun toString(): String = "" } abstract class KC2 : JC2() class Z : KC2() { override fun equals(other: Any?): Boolean = true override fun hashCode(): Int = 0 override fun toString(): String = "" } fun box(): String { X().equals(X()) X().hashCode() X().toString() Y().equals(Y()) Y().hashCode() Y().toString() Z().equals(Z()) Z().hashCode() Z().toString() return "OK" }