/*sealed*/ interface SI1 { class A : SI1 class B : SI1 } /*sealed*/ abstract class SC1 { class A: SC1() class B: SC1() } abstract class E1 { object A : E1() object B : E1() } abstract class E2 { class A : E2() class B : E2() } sealed interface SI2 { object ClassToObject : SI2 class ObjectToClass : SI2 } sealed class SC2 { object ClassToObject : SC2() class ObjectToClass : SC2() }