// EXPECTED_REACHABLE_NODES: 1312 package foo data class Holder(val v: T) data class Dat(val start: String, val end: String) data class Dat2(val start: String, val end: String) class Obj(val start: String, val end: String) fun box(): String { val d1 = Dat("a", "b") val d2 = Dat("a", "b") val d3 = Dat("a", "c") val otherD1 = Dat2("a", "b") assertEquals(d1, d1) assertEquals(d1, d2) assertNotEquals(d1, d3) assertNotEquals(d1, otherD1) var hd1 = Holder(Dat("y", "n")) var hd2 = Holder(Dat("y", "n")) var hd3 = Holder(Dat("1", "2")) assertEquals(hd1, hd1) assertEquals(hd1, hd2) assertNotEquals(hd1, hd3) var ho1 = Holder(Obj("+", "-")) var ho2 = Holder(Obj("+", "-")) var ho3 = Holder(Obj("*", "*")) assertEquals(ho1, ho1) assertNotEquals(ho1, ho2) assertNotEquals(ho1, ho3) val d1any: Any = d1 assertTrue(d1any != "") return "OK" }