sealed class SealedClass data class SealedChild1(val number: Int) : SealedClass() data class SealedChild2(val e1: Int, val e2: Int) : SealedClass() data class SealedChild3(val m1: Int, val m2: Int) : SealedClass() sealed class SealedClassWithObjects object SealedWithObjectsChild1 : SealedClassWithObjects() object SealedWithObjectsChild2 : SealedClassWithObjects() object SealedWithObjectsChild3 : SealedClassWithObjects() sealed class SealedClassSingle data class SealedSingleChild1(val number: Int) : SealedClassSingle() sealed class SealedClassSingleWithObject object SealedSingleWithObjectChild1: SealedClassSingleWithObject() {} sealed class SealedClassEmpty sealed class SealedClassWithMethods class SealedWithMethodsChild1() : SealedClassWithMethods() { fun m1() = this.hashCode().toString() } class SealedWithMethodsChild2() : SealedClassWithMethods() { fun m2() = this.hashCode().toString() } class SealedWithMethodsChild3() : SealedClassWithMethods() { fun m3() = this.hashCode().toString() } sealed class SealedClassMixed { val prop_1: Int? = 10 } data class SealedMixedChild1(val number: Int) : SealedClassMixed() data class SealedMixedChild2(val e1: Int, val e2: Int) : SealedClassMixed() data class SealedMixedChild3(val m1: Int, val m2: Int) : SealedClassMixed() object SealedMixedChildObject1 : SealedClassMixed() { val prop_2: Int? = 10 } object SealedMixedChildObject2 : SealedClassMixed() object SealedMixedChildObject3 : SealedClassMixed()